2013-06-20 59 views
2

我想要編譯通過化妝用gcc一些C代碼,但我不斷收到:編譯錯誤:在/ usr /斌/勞工處:找不到-lnetlink

/usr/bin/ld: cannot find -lnetlink 

-lnetlink包括在gcc中創建參數。使用找到netlink是能夠找到多個項目。我甚至已經通過使用-L/usr/include/linux告訴gcc究竟在哪裏可以找到一個,但它仍然會給出錯誤。

gcc的命令參數如下:

gcc -g -ggdb -Wall -Wextra -o mt6d mt6d.o address_worker.o tunnel_worker.o mt6d_assoc.o addr_gen.o send_utils.o if_utils.o tun_utils.o icmp_utils.o utils.o -lcrypto -lssl -lnetlink -lpthread -lnetfilter_queue 

我也一直有錯誤與libnetlink.h,但能夠讓他們解決了,但我將在這裏如果可能與其他人修復後立即出現此錯誤。通過使用固定C_INCLUDE_PATH

我最近升級到Ubuntu 13.04和之前使用11.04。

如果您需要更多信息,請告知我。任何幫助將不勝感激!

感謝, -Alan

回答

0

I'm trying to compile some c code via make with gcc, but I keep getting:

從技術上講,這個階段被稱爲鏈接。這種差異一開始可能看起來很微妙,但它是一個非常重要的差異,可以幫助調查出現這種問題時的調查。

您不應該參考/usr/include路徑與-L-L添加到圖書館的搜索路徑中,通常只有頭文件應顯示在/usr/include下。

libnl啓用pkg-config,所以你應該使用它。

例如(假設你安裝libnl-3-dev):

gcc -o my_executable $(pkg-config --libs libnl-3.0) my_foo.o my_bar.o 

Makefile,你可以做到以下幾點,以達到這樣的效果:

LDLIBS+=$(shell pkg-config --libs libnl-3.0) 
CFLAGS+=$(shell pkg-config --cflags libnl-3.0) 
相關問題