Linux

編譯 BFLT Utils 時遇到問題:儘管已安裝,但找不到 libiberty.h

  • August 24, 2015

我正在嘗試編譯 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。)

引用自:https://unix.stackexchange.com/questions/224681