导航:首页 > 源码编译 > 为什么开源库还要编译一下

为什么开源库还要编译一下

发布时间:2023-02-11 22:26:05

⑴ 什么叫做内核编译,为什么要进行内核编译呢

对开源操作系统(主要是指linux)的内核源代码在本机进行有针对性的编译,就叫做内核编译。
编译内核的目的主要是改变内核的默认选项,比如内核原来不支持某硬件,原因是内核的相应选项默认状态是disactivated,需要改变。
当然,也有人把新版的linux装在旧机子上。这样,许多在内核里activated的硬件,他没有,将来也不需要。那么,就可以在内核里去掉。以及一些服务、特殊的功能等等,如果用不着,比如机子是服务器的话,最好在内核里关掉,"精兵简政"。这是以系统安全和提高效率为目的。
有专门的工具对其进行编译。这个问题不是几句话能说明白的。看你的提问就知道你是刚刚学习这些内容,建议不要好高骛远,先把c语言学好,然后再研究这些东西。

欢迎访问我的论坛:)
http://www.chinesebloger.com
期待您的支持:)

⑵ Android怎么将开源库编译成jar包

1. 开源库的jar可以直接拿来在Android里面编译使用,可能涉及一些依赖的库。

2. 如果需要编译Jar包,有两种选择:
第一种: 基于java方式的Jar包,工程导入后,通过export方式导出的jar。
第二种: 基于Android方式的Jar包,工程通过Android lib project的方式导入的。具体步骤:
new->project...->Android Project from Existing Code->填入路径->Finish->右击工程->Export...->Java->JAR file
理论上如果开源库不是基于Android开发的话,第二种方式导出Jar,估计需要比较久的解决依赖的过程。

⑶ opencv为什么需要python编译

因为官方释放的版本缺少了很多深度学习相关的模块。OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和MacOS操作系统。opencv需要python编译是因为官方释放的版本缺少了很多深度学习相关的模块。Python由荷兰数学和计算机科学研究学会的GuidovanRossum于1990年代初设计,作为一门叫做ABC语言的替代品。

⑷ oracle数据库开发人员说‘需要重新编译一下’是什么意思 是说要重新跑某个过程吗

重新编译,就是某个过程或者函数哪里做了修改 需要重新编译成可以执行的文件,并不是说重新跑某个过程。编译完成之后,把编译好了的过程再重新运行。

⑸ linux为什么要编译内核

Linux内核版本是不断更新的,通常,更新的内核会支持更多的硬件,具备更好的进程管理能力,运行速度更快、 更稳定,并且一般会修复老版本中发现的许多漏洞等。而已安装好的Linux系统如果不是滚动升级的,或者没有内核更新选择的话,如果用户想要使用这些新特性,或想根据自己的硬件平台定制一个更高效,更稳定,更快速的内核,就需要重新编译内核。

下载源码编译内核,如果不做相关优化,直接编译,结果就跟现在正在使用的系统没什么区别。

学习linux驱动,必须要有实践的平台环境吧,至于需不需要购置平台,要看你的学习目的了。

⑹ 运行java程序时,为什么要先编译再运行,编译运行一起进行不行吗

java讲究的是 一次编译 处处运行,也就是提高了程序的一致性。java的程序之所在不同的操作系统上的运行结果是一样的,是因为java虚拟机。

所以要运行java都要装一个叫jdk的东西,里面有java的虚拟机。这个虚拟机就是来解释我们写的代码。通过这个虚拟机,就实现了代码的移植。

我们写好的程序,通过虚拟机,编译成class文件,然后在运行。但是我们只需要编译一次即可。

⑺ 开源代码,编译不过,哪位大神知道怎么回事

即使是开放的源代码,如果有一部分需要自己拿来作为己用,那也不是说直接拿来就可以百分之百地使用的。也必须要设置好相关的一些环境变量(例如:路径名、系统链接库等)以及相应的系统参数,然后再对自己的源程序进行编译。只有这样才能够通过编译,最后再经过和系统库进行链接,最终生成可执行文件。

⑻ 为什么有的模型要编译成库文件

库文件:
一句话概述:
将函数封装起来,放在里面,提供接口,供调用。

库文件可以说是程序员必须接触的东西,我们常听说库,什么编码库,xx库啊等等,这些库,其实它的前身仍然是代码(跟我们平常写的.c等等这些文件差不多),只不过,它编译生成的不再是程序(里面没有main),而只是类似于头文件之类的,只提供接口,给别人调用。

好处:
①把常用的放在库中,需要的就直接调用(可以添加头文件来进行声明,否则,会隐式声明)
②把不想公开的代码放在库中,但是留出头文件,给出接口,让其他人使用。

怎么编译生成库:
预备知识:
库文件包括动态库,以及静态库。

动态库是指编译的时候不把这个库文件所需要的东西编译进去,而是在执行的时候再到库中寻找相应的内容;
静态库是指吧程序所需的函数从库中拿出来,然后编译进程序里面,后续执行就不再需要库了。
双方各有好处,前者,明显的好处就是程序文件更小,而后者程序文件比较大,但是,运行不需要其他的库支持。
过程:
主要为4大过程:
①代码,常规书写,不用写main,然后,下一步,编译:
代码大致如下:

(1).c文件如下:

#include <stdio.h>

void print_hello()
{
printf("hello everybody\n");
}
1
2
3
4
5
6
1
2
3
4
5
6
.h文件:

#ifndef __HELLO_H__
#define __HELLO_H
void print_hello(); //这个可用,也可不用,不用的话,就变成隐式声明。
#endif
1
2
3
4
1
2
3
4
②gcc -c hello.c //这一步是为了生成目标文件,但是,其实不需要它也行,不过,它是生成静态库与动态库的中间状态。
③ ar cr libmyhello.a hello.o //生成libmyhello.a 这么一个静态库,注意命名规则libxxx.a
④编译执行程序:gcc xxx.c -o xxx -L ./libmyhello.a // 调用方法1;
gcc xxx.c -o xxx -lmyhello //调用方法2,此时,需要-l后面自动补了,但是,需要放到设备的lib环境变量中
执行程序:

#include <stdio.h>
#include "hello.h"

int main()
{
print_hello(); //能调用库里面的函数,输出“hello everybody”
return 0;
}
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
动态库:
①②同上;
③gcc -fPIC -shared -o libmyfirstso.so myfirstso.c //生成了动态库,注意命名规则;
④编译执行程序:gcc xxx.c -o xxx -L ./libmyfirstso.so //方法1;
gcc xxx.c -o xxx -lmyfirstso //方法2,同上,需要放到设备的lib环境变量中

当然,也可以将他们混合在一起编译也行,如果是想指定路径的话,直接指定即可,如:-L ./lib/libmyfirstso.so

总结:
库文件非常重要,有以下三点需要注意:
①需要了解的是静态库与动态库的区别;
②需要掌握静态库的生成指令(ar cr libhello.a hello.o)、动态库生成指令(gcc -fPIC -shared -o libhelloso.so hello.o);
③需要掌握如何利用库编译执行程序(-L ./libhello.a ; -lhello)(两种方法)

阅读全文

与为什么开源库还要编译一下相关的资料

热点内容
pdf合并成一个pdf在线 浏览:383
柱加密区构造要求 浏览:514
地板木龙骨标准跟加密区别 浏览:150
解压放松的好地方河南 浏览:965
搜狗怎么移动到文件夹 浏览:617
文件自动选择到文件夹 浏览:794
赠送的app怎么在ipad下载 浏览:508
颈椎解压后神经恢复 浏览:849
怎么看app订阅扣费 浏览:314
linux系统的负载均衡 浏览:419
遇到挫折解压视频 浏览:778
什么指令看服务器运行负载 浏览:84
因硕智能门锁卡片是加密的么 浏览:336
为什么会服务器不可用 浏览:290
wow宏命令设置 浏览:264
解压神器一张纸折叠魔术球 浏览:23
怎么样可以取消加密软件oppo 浏览:580
屏幕共享源码哪家比较不错 浏览:665
vb中双击命令按钮 浏览:208
服务器做了磁盘阵列怎么重装 浏览:606