cygwin:链接器找不到共享库
问题描述:
我正在cygwin中创建一个exe和共享库。cygwin:链接器找不到共享库
该库已创建并位于适当的位置,但是当我尝试编译客户端代码守护进程时,链接阶段表示它找不到sysutil库。
误差贴在下面:
/usr/lib/gcc/i686-pc-cygwin/5.4.0/../../../../i686-pc-cygwin/bin/ld: cannot find -lsysutil
collect2: error: ld returned 1 exit status
make: *** [Makefile:84: daemon] Error 1
我尝试使用LD_LIBRARY_PATH
但不幸的是也没有帮助出口的路径。
daemon.c
#include <stdio.h>
#include <sys_util.h>
int main(){
sys_util();
while(1){
}
return 0;
}
sysutil.c
#include <stdio.h>
#include "sys_util.h"
int sys_util(){
return 0;
}
sysutil.h
int sys_util();
test.bat的
g++ -fpic -c sysutil.c
g++ -shared -o libsysutil.so sysutil.o -I.
g++ -c daemon.c -I.
g++ -o daemon.exe daemon.o -L. -lsysutil
del *.o
共享库在目录C sysutil.so产生:/测试相同的源代码(daemon.c,sysutil.c,sys_util.h,test.bat的,libsysutil.so)
Cygwin的控制台输出: /cygdrive/C /测试 $ ./test.bat
C:\测试>克++ -fpic -c sysutil.c sysutil.c:1:0:警告:-fpic忽略目标(所有的代码是位置无关)
C:\ test> g ++ -shared -o libsysutil.so sysutil.o -I。
C:\ test> g ++ -c daemon.c -I。
C:\ test> g ++ -o daemon.exe daemon.o -L。 -lsysutil c:/ mingw/bin /../ lib/gcc/mingw32/5.3.0 /../../../../ mingw32/bin/ld.exe:找不到-lsysutil collect2。 exe文件:错误:LD返回1个退出状态
C:\测试>德尔*的.o
答
Cygwin的期望共享库具有.dll扩展。
更改在批处理文件的第二行:
g++ -shared -o sysutil.dll sysutil.o -I.
查看用户指南,了解更多信息: https://cygwin.com/cygwin-ug-net/dll.html
哪里导入库和你如何调用编译器?您没有给我们任何信息来猜测问题出在哪里 – matzeri
@matzeri我更新了示例代码和控制台链接错误。 – Rohan