Linux
編譯 BFLT Utils 時遇到問題:儘管已安裝,但找不到 libiberty.h
我正在嘗試編譯 BFLT Utils ( https://github.com/nihilus/bflt-utils ),但不斷收到以下錯誤:
$:/tmp/bflt-utils/flthdr# make gcc -Wall -g -O2 compress.c -c gcc -Wall -g -O2 stubs.c -c gcc -Wall -g -O2 flthdr.c -c flthdr.c:22:23: fatal error: libiberty.h: No such file or directory #include <libiberty.h> ^ compilation terminated. Makefile:16: recipe for target 'flthdr.o' failed make: *** [flthdr.o] Error 1
我已經
libiberty-dev
使用apt-get install libiberty-dev
. 並使用find / -name libiberty.*
產量:/usr/include/libiberty/libiberty.h
我試圖修改 Makefile 以使用以下方法添加路徑:
CC=gcc CFLAGS=-Wall -g -O2 -L/usr/include/libiberty LDFLAGS=-lz -lc -lbfd -liberty TARGET=flthdr $(TARGET): compress.o stubs.o flthdr.o $(CC) $(CFLAGS) -o $(TARGET) *.o $(LDFLAGS) compress.o: $(CC) $(CFLAGS) compress.c -c stubs.o: $(CC) $(CFLAGS) stubs.c -c flthdr.o: $(CC) $(CFLAGS) flthdr.c -c clean: rm -f *.o $(TARGET)
但我仍然得到同樣的錯誤。
為什麼找不到標頭檔?
馬克上面的評論是正確的:您的
CFLAGS
添加應該使用-I
,而不是-L
。編譯器的-L
標誌告訴它在哪裡可以找到庫,但是您沒有找到頭文件。(是的,標頭檔被稱為
libiberty.h
,但這並不能使它成為一個庫。)通常,您
-L
在 makefileLDFLAGS
和相關變數中使用標誌。(我已經向項目報告了這個問題,所以希望一旦修復它就不會傷害其他人。也許你會提供更新檔或拉取請求,Torra。)