我有一个使用libevent库的程序
编译程序时,编译命令如下:
gcc -o myprogram mysource.c mysource.h -levent
所以它是动态链接。
现在我想在没有解放的计算机上运行这个程序, 我需要静态链接,以便我的程序可以在该计算机上运行, 有什么简单的步骤吗?
我尝试了-static
,但我收到了以下错误:
[root@kitty relay]# gcc -o relay -static mysource.c mysource.h -levent -lpcap
/usr/bin/ld: cannot find -lpcap
/usr/bin/ld: cannot find -lc
collect2: ld returned 1 exit status
为什么?
答案 0 :(得分:1)
<强>
-static
强>在支持动态链接的系统上,这会阻止与共享库的链接。在其他系统上,此选项无效。
答案 1 :(得分:1)
你应该有libevent.a
。然后你就可以gcc -o myprogram mysource.c libevent.a
。
或尝试gcc -o myprogram -static mysource.c -levent
。
(你可能不应该将mysource.h
指定为gcc,因为它最有可能包含在#include "mysource.h"
的mysource.c中。)