A. linux的静态链接库.a文件,能用到嵌入式的Linux里吗
linux下能用,嵌入式linux肯定也能用啊。是一样的
windows下也能编译,我是用的xilinx专有的EDK编译的,选择好了库就行了
当然只能在linux系统下调用
B. linux中,a文件与.so文件有什么关系吗
.a和.so文件都是函数库文件。库是一组预先编译好的函数的集合,库文件的名字以内lib开头,随后的容部分指明这是什么库(例如c代表C语言库,m代表数学库)。
.a代表的是静态函数库,当同时运行多个程序并且都使用到同一个函数库的函数时,内存中就会有同一函数的多份副本,会消耗大量宝贵的内存。
.so是共享函数库,可以克服.a函数库的不足。当一个程序使用共享函数库时,程序本身不再包含函数代码,而只是引用共享代码,当实际调用时,共享库才被加载到内存中。
.a文件类似于Windows下的.lib文件,.so文件类似于Windows下面的.dll文件,这样就好理解了。
C. LInux 如何使用GCC编译器将一个文件夹下的100个.o文件打包成一个静态库文件(.a)
你已来经用gcc编译出目标文件自了,用ar工具打包成.a文件就行了啊,示例:
如上图,假设我有test1.c,test2.c两个源文件,先使用gcc -c *.c将源文件编译成目标文件,可以看到,生成了test1.o,test2.o两个目标文件,然后,使用ar命令:ar crv libtest.a *.o将该目录下的所有目标文件打包生成了libtest.a文件。这样,你在编译的时候就可以直接使用这个静态库了。
D. linux使用其他的头文件
1)
C库这种东西,有标准,但没有官方实现,谁想自己写一个都行。当然常用的就那么几个,vc的libcmt.lib和msvcrxx.dll,linux上么,glibc吧。另外也有μclibc之类的。
2)
.h是头文件,库文件么,.lib和.a是静态库,.dll和.so是动态库。#include就是让预编译器找到某个文件(一般是头文件),把里面的内容原封不动地放到#include的位置上。你要愿意,也可以把什么都写进头文件里,对编译器来说,这相当于把一切都写进了一个源程序文件。反正写个小程序这么搞没啥问题 。
3)
就是这样的。而且其中的依赖关系越来越微妙。
4)
程序=算法+数据结构+程序设计方法+语言工具和环境
E. linux下的so,o,lo,a,la文件有什么区别
它们的具体区别并不算太大,只是链接后的不同,具体区别如下:
F. linux下调用库的时候,只有.a文件没有头文件能用么
.a文件就是库文件
.h头文件,编程的时候才需要。调用库文件的时候不需要头文件。
G. linux c语言静态库(.a文件)为什么用ftp从远程登录下到本地后不能用 是不是这样下载该.a文件被破坏了
1、远程系统的字长和本地一样吗?比如64位和32位
2、远程系统上的编译器和本地差别大吗?编译器版本差太多的话,.a文件的格式可能会不同的
3、再不行的话你尝试强制以binary方式传输文件。会不会是以文本方式传.a导致文件被传坏了
H. linux下的so,o,lo,a,la文件有什么区别
o: 编译的目标文件
a: 静态库,其实就是把若干o文件打了个包
so: 动态链接库(共享库)
lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息
la: 使用libtool编译出的库文件,其实是个文本文件,记录同名动态库和静态库的相关信息
I. linux a 静态库 怎么设置
Linux的静态库文件并不需要设置啊,编译链接.a静态库文件时只需要加上.a文件的完整版路径就权可以了,比如:
gcc
-o
hello
hello.c
/usr/lib/libm.a
只有编译链接动态库才需要用-L选项来设置动态库的搜索路径,比如这个命令:
gcc
-o
hello
hello.c
-L/usr/openssl/lib
-lcrypto
J. .a是什么文件可直接执行吗
这是linux平台的,o是链接文件,而a是库文件:
a库文件可以通过ar命令从o文件得到:ar rcs libfoo.a a.o b.o
一般a文件都放在/usr/lib目录下,我们把libfoo.a也放在此目录,以后要使用libfoo.a中的函数,比如
hello.c中引用了libfoo.a中的函数,编译如下:
gcc hello.c -Lfoo -o hello