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个回答

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

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

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

改成

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

试试

定义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
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问