gcc编译多重依赖动态库, 这样怎么会出问题

时间:2023-02-09 19:24:00
现在有一个外部设备的驱动为MWIC.so, 我自己写一个动态库名字是libDll.so 其中调用了这个动态库.
使用的是如下编译方式
gcc -fpic -shared -o libDll.so DLL.c -L. -MWIC.so


然后有一个测试程序调用这个libDll.so, 
采用如下的编译方式会提示 无法识别的命令行选项"-MWIC"
gcc -o test.o test.c -libDll.so -MWIC.so

如果去掉后面两个动态库的"-" 会提示 MWIC.so: could not read symbols: File in wrong format

如果采用下面这种编译方式, 就会有一堆未定义

gcc -o test.o test.c  libDll.so

5 个解决方案

#1


为什么 不按 gcc 的规则做

#2


gcc的规则?我就是按照网上的方法再做.
刚开始接触GCC

#3


引用 1 楼 zhxianbin 的回复:
为什么 不按 gcc 的规则做

能帮我指出哪错了吗?

#4


比如你有 libMWIC.so
就用-l-MWIC
如果没有,就做个libMWIC.so软链接向MWIC.so

#5


引用 3 楼 K_Lord 的回复:
Quote: 引用 1 楼 zhxianbin 的回复:

为什么 不按 gcc 的规则做

能帮我指出哪错了吗?


gcc -o test.o test.c -lDll.so -lMWIC.so

so 的文件名要求  libDll.so   libMWIC.so ,可以是软链接

#1


为什么 不按 gcc 的规则做

#2


gcc的规则?我就是按照网上的方法再做.
刚开始接触GCC

#3


引用 1 楼 zhxianbin 的回复:
为什么 不按 gcc 的规则做

能帮我指出哪错了吗?

#4


比如你有 libMWIC.so
就用-l-MWIC
如果没有,就做个libMWIC.so软链接向MWIC.so

#5


引用 3 楼 K_Lord 的回复:
Quote: 引用 1 楼 zhxianbin 的回复:

为什么 不按 gcc 的规则做

能帮我指出哪错了吗?


gcc -o test.o test.c -lDll.so -lMWIC.so

so 的文件名要求  libDll.so   libMWIC.so ,可以是软链接