当前位置: 技术问答>linux和unix
关于静态编译
来源: 互联网 发布时间:2016-09-07
本文导语: 我编一个静态库 假设为a.a 编译静态库的时候用 -lpthread 然后我调用a.a这个库的函数 为什么还要加上-lpthread 我是用ar -cr a.a *.o 然后就生成了a.a这个库 但是.o只经过了编译没有链接-lpthread所以我在调用a.a这个库...
我编一个静态库 假设为a.a 编译静态库的时候用 -lpthread
然后我调用a.a这个库的函数 为什么还要加上-lpthread
我是用ar -cr a.a *.o
然后就生成了a.a这个库 但是.o只经过了编译没有链接-lpthread所以我在调用a.a这个库的时候需要加上-lpthread
我试了下ar -cr a.a *.o libpthread.a
结果是我调用a.a这个文件的时候 提示找不到pthread_create这个函数
问题 : 应该怎么静态编译 可以让我调用a.a这个库的时候不用再加上-lphread只用-la就可以调用a.a这个库里面的函数
然后我调用a.a这个库的函数 为什么还要加上-lpthread
我是用ar -cr a.a *.o
然后就生成了a.a这个库 但是.o只经过了编译没有链接-lpthread所以我在调用a.a这个库的时候需要加上-lpthread
我试了下ar -cr a.a *.o libpthread.a
结果是我调用a.a这个文件的时候 提示找不到pthread_create这个函数
问题 : 应该怎么静态编译 可以让我调用a.a这个库的时候不用再加上-lphread只用-la就可以调用a.a这个库里面的函数
|
原理就是,只有在生成可执行文件的时候,才解析外部符号。