动态链接库可以规定路径,否则会按照Ubuntu的默认路径去寻找,很有可能找不到!!!!
默认情况下,库的搜索路径是(我的是ubuntu) "/usr/lib"和"/usr/local/lib",
你可以吧文件复制进目录,但是比较麻烦,这是比较简单的就是用-L规定路径。
arm-linux-gnueabihf-gcc -O -lm -g -w -o SY_Unbalance_Testdemo main.c lib/*.c -Ilib -I./ -L./lib-standard -lmosquitto -lcares -lcrypto -licudata -licuuc -llzma -lsg -lssl -lxml2 -lz
库主要放在lib 和/usr/lib(可以用ls /lib ls/usr/ib查看)
动态库不可以,如果将编译好的程序复制到其他设备运行,需要将可执行文件和动态库一起拷走
静态库浪费磁盘空间
比如很多个程序同时用到了一个库,在编译后产生的可执行文件都包含这个库,浪费磁盘空间
静态库的创建
1.编译一个程序
#include <stdio.h>
void hello(void)
{
printf("hello world\n");
return ;
}
执行 gcc -c hello.c -Wall 会创建一个.o文件
2.创建静态库hello
$ ar -rsv libhello.a hello.o
3.链接静态库
编写test.c程序
注意-L. .代表当前路径
#include <stdio.h>
void hello(void);//函数声明
int main(int argc, char **argv)
{
hello();
return 0;
}