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)
하지만 여전히 같은 오류가 발생합니다.
왜 헤더 파일을 찾을 수 없나요?
답변1
위의 Mark의 의견은 정확합니다. 대신 CFLAGS
add를 사용해야 합니다 . 컴파일러의 플래그는 라이브러리를 찾을 수 있는 위치를 알려주지만 찾을 수는 없습니다.-I
-L
-L
머리글문서대신에.
(예, 헤더 파일의 이름은 that libiberty.h
이지만 이것이 라이브러리라는 의미는 아닙니다.)
일반적으로 -L
makefile LDFLAGS
및 관련 변수에 플래그를 사용합니다.
(나는 가지고있다이 문제를 보고했습니다프로젝트에 추가되므로 일단 수정되면 다른 사람에게 영향을 미치지 않기를 바랍니다. Torra님, 패치나 풀 요청을 제공해 주실 수도 있습니다. )