2017-02-24 237 views
1

我正在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

+0

哪里导入库和你如何调用编译器?您没有给我们任何信息来猜测问题出在哪里 – matzeri

+0

@matzeri我更新了示例代码和控制台链接错误。 – Rohan

回答