2 gbd8583 gbd8583 于 2016.01.21 14:23 提问

linux C 编译 动态库.so 提示 方法load failed

makefile里:
libtest.so: 1.o 2.o 3.o 4.o
gcc -shared -fPIC -o libtest.so 1.c

1.c 用到的方法都在2.o,3.o,4.o里, 现在编译libtest.so没问题,但是程序跑的时候,
提示 1.c调用2.o里的方法load fail;

小弟没怎么弄过makefile, 求大神指点!

5个回答

oyljerry
oyljerry   Ds   Rxr 2016.01.21 16:22

把所有用到的so也放到程序当前目录

caozhy
caozhy   Ds   Rxr 2016.01.21 16:22

http://blog.csdn.net/nodeathphoenix/article/details/7528070
另外要注意平台,比如说x86编译的so,拿到arm的手机上肯定是不行的。

John_ToStr
John_ToStr   Rxr 2016.01.23 16:44

目录没问题的话就是平台问题

hijack00
hijack00   Rxr 2016.08.27 10:20

改成

libtest.so: 1.o 2.o 3.o 4.o
    gcc -shared -fPIC -o libtest.so 1.c $^

试试

wslrabit
wslrabit   2016.10.08 18:14

定义CFLAGS+=-fPIC试试。 1.o, 2.o 3.o 4.o被隐形规则编译,等同于gcc -o 1.o 1.c , 实际需要的是gcc -fPIC -o 1.o 1.c。

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!