当前位置:首页 » 编程软件 » linux静态库多平台编译

linux静态库多平台编译

发布时间: 2022-06-17 04:16:39

㈠ 如何以静态链接方式交叉编译linux上的软件n

在编译命令行中,将使用的静态库文件放在源文件后面就可以了。比如:
gcc -L/usr/lib myprop.c libtest.a libX11.a libpthread.a -o myprop
其中-L/usr/lib指定库文件的查找路径,编译器默认在当前目录下先查找指定的库文件。

㈡ 在Linux下如何使用GCC编译程序、简单生成 静态库及动态库

一个程序调用了一个动态库,但是两者之间有函数重名,导致运行时动态库中的Linux下动态库文件的扩展名为这样,线程函数库被称作libthread.so。静态库的

㈢ Linux编译静态链接库出现如图错误,求救!

1.
只表明
库文件
路径,未说明库文件名称。选项再加一条
-l
count
2.
库文件命名错误,应该为"libxxx.a"(静态库),此处名称应为libcount.a
3.
重要:记得不清了,可能我上面说的都是错的!!!

㈣ linux下编译怎么链接静态库

静态库不能被打包到.o 文件 在C编译中, 是.c编译成.o,然后若干个.o打包成.a .a要比.o高一级的。 所以不能产生新的.o 你可以把.a文件解开 成为.o集合 加上你的.o文件, 共同打包成一个新的.a文件 这样是可行的。

㈤ Linux 中,在使用g++编译、连接程序时,怎样调用多个静态库文件

在编译命令行中,将使用的静态库文件放在源文件后面就可以了。比如:
gcc -L/usr/lib myprop.c libtest.a libX11.a libpthread.a -o myprop
其中-L/usr/lib指定库文件的查找路径,编译器默认在当前目录下先查找指定的库文件。

㈥ 如何使用预编译的静态库平台

tbb 2.2中提供了统一的头文件:tbb.h,只要包含这个文件就可以使用所有tbb的库了。为了使用起来方便,以及可以使用静态库,可以使用以下这些命令自己创建:

# 1. 先下载 tbb22_20090908oss_src.tgz, 去 http://www.threadingbuildingblocks.org

# 2. 解压
tar -zxvf tbb22_20090908oss_src.tgz
cd tbb22_20090908oss

# 3. 编译,没必要直接make,很多东东其实不需要
make tbb && make tbbmalloc

# 4.编译好的东东在build目录下,不同的编译器和操作系统,文件夹的名字不一样
cd build/linux_ia32_gcc_cc4.1.0_libc2.4_kernel2.6.16.46_release

# 5.自己写个命令把o文件打包成静态库
ar cqs libtbb.a *.o
cp libtbb.a ../../../
#再去预编译头文件
cd ../../include/tbb
g++ -o tbb.h.gch -x c++-header -c tbb.h -g -Wall -Werror -O2 -DNDEBUG
cp tbb.h.gch tbb.h ../../../
cd ../../../

㈦ 请教关于linux中静态库与动态库的问题

哈哈,简单的来说可以按你这么理解,静态库就是在打包在程序里面的,而动态库是和程序分离开的,是程序需要的时候动态装配进内存的。

说一下我自己的理解和经验吧:动态库之所以会用到,是因为有些库会被多个程序用到,拿windows的例子来说吧,比方说你开两个游戏,一个魔兽,一个极品飞车,这两个都要用到activex 这个库,如果做为动态库,两个程序共用一个,但是静态库就要分别为两个游戏都生成库,如果更多的话,这样就浪费了内存很多空间。

静态库是和程序一起装入内存的(其实静态库已经成为程序的一部分),而动态库是动态装入内存的,如果内存不大,又使用静态库,必然会发生很多的缺页中断,这样效率会很低哦,你有兴趣可以多多研究一下内存的一些算法,linux kernel有现成的分页算法,会对你很有帮助的。

如果缺页中断不太明白的话可以看看操作系统的书,或者追问我,大家一起切磋交流~

㈧ linux静态库怎么编译

linux库有动态与静态两种,动态通常用.so为后缀,静态用.a为后缀。例如:libhello.so
libhello.a
为了在同一系统中使用不同版本的库,可以在库文件名后加上版本号为后缀,例如:
libhello.so.1.0,由于程序连接默认以.so为文件后缀名。所以为了使用这些库,通常使用建立符号连接的方式。
ln
-s
libhello.so.1.0
libhello.so.1
ln
-s
libhello.so.1
libhello.so
动态库和静态库的区别:
当要使用静态的程序库时,连接器会找出程序所需的函数,然后将它们拷贝到执行文件,由于这种拷贝是完整的,所以一旦连接成功,静态程序库也就不再需要了。然而,对动态库而言,就不是这样。动态库会在执行程序内留下一个标记‘指明当程序执行时,首先必须载入这个库。由于动态库节省空间,linux下进行连接的缺省操作是首先连接动态库,也就是说,如果同时存在静态和动态库,不特别指定的话,将与动态库相连接。
两种库的编译产生方法:
第一步要把源代码编绎成目标代码。以下面的代码hello.c为例,生成hello库:
/*
hello.c
*/
#include
void
sayhello()
{
printf("hello,world\n");
}
用gcc编绎该文件,在编绎时可以使用任何全法的编绎参数,例如-g加入调试代码等:
gcc
-c
hello.c
-o
hello.o
1.连接成静态库
连接成静态库使用ar命令,其实ar是archive的意思
$ar
cqs
libhello.a
hello.o
2.连接成动态库
生成动态库用gcc来完成,由于可能存在多个版本,因此通常指定版本号:
$gcc
-shared
-wl,-soname,libhello.so.1
-o
libhello.so.1.0
hello.o
另外再建立两个符号连接:
$ln
-s
libhello.so.1.0
libhello.so.1
$ln
-s
libhello.so.1
libhello.so
这样一个libhello的动态连接库就生成了。最重要的是传gcc
-shared
参数使其生成是动态库而不是普通执行程序。
-wl
表示后面的参数也就是-soname,libhello.so.1直接传给连接器ld进行处理。实际上,每一个库都有一个soname,当连接器发现它正在查找的程序库中有这样一个名称,连接器便会将soname嵌入连结中的二进制文件内,而不是它正在运行的实际文件名,在程序执行期间,程序会查找拥有
soname名字的文件,%b

㈨ 嵌入式linux实验 怎么完成封装,怎么编译静态库或动态库

恩,x86下面的linux库简单啊,建议写个makefile。静态使用static就行,动的用shared。

㈩ Linux 下Makefile怎么写,编译包含 一个共享库文件,一个静态库文件,四个.c文件。

看看伟东山裸机的源代码就能知道了, 调用的库文件只需放在同一目录下就可以

热点内容
html文件上传表单 发布:2024-09-17 03:08:02 浏览:783
聊天软件编程 发布:2024-09-17 03:00:07 浏览:725
linuxoracle安装路径 发布:2024-09-17 01:57:29 浏览:688
两个安卓手机照片怎么同步 发布:2024-09-17 01:51:53 浏览:207
cf编译后没有黑框跳出来 发布:2024-09-17 01:46:54 浏览:249
安卓怎么禁用应用读取列表 发布:2024-09-17 01:46:45 浏览:524
win10设密码在哪里 发布:2024-09-17 01:33:32 浏览:662
情逢敌手迅雷下载ftp 发布:2024-09-17 01:32:35 浏览:337
安卓如何让软件按照步骤自动运行 发布:2024-09-17 01:28:27 浏览:197
Z包解压命令 发布:2024-09-17 01:27:51 浏览:221