无法链接BFD

我想在我的项目中包含这个文件: http : //cairo.sourcearchive.com/documentation/1.9.4/backtrace-symbols_8c-source.html

但它需要与BFD链接。 我安装了binutilsbinutils-devel 。 我尝试过连接-lbfd以及直接连接到/usr/lib64/libbfd.so/usr/lib64/libbfd.a (两者都存在)。 我也尝试搜索pkg-config以查看我应该使用的是否有不同的标志,但是pkg-config没有引用BFD或binutils

无论我尝试过什么,我都会遇到以下错误:

 undefined reference to 'bfd_init' undefined reference to 'bfd_openr' undefined reference to 'bfd_check_format' undefined reference to 'bfd_checkformat_matches' undefined reference to 'bfd_close' undefined reference to 'bfd_map_over_sections' 

首先,我正在编译我的记录器和我上面链接的backtrace-symbols.c文件(因为记录器是我打算用它来打印痕迹的地方)。 然后我将这两个目标文件一起链接到一个组合的目标文件中:

 CC = clang CFLAGS = -g -Wall -c SOURCE = simplog.c OBJ = simplog.o, simplog-temp.o, backtrace-symbols.o all: $(CC) $(CFLAGS) $(SOURCE); mv simplog.o simplog-temp.o; \ $(CC) -ansi $(CFLAGS) backtrace-symbols.c; \ ld -r simplog-temp.o backtrace-symbols.o -o simplog.o clean: rm -f $(OBJ) 

然后我将这个目标文件链接到我的主项目:

 CC= clang++ PROG= ./bin/chiplus8 OBJS= ./src/main.o ./src/Chip8.o ./src/EmuCPU.o ./src/SimpleLogger/simplog.o LIBS= CXXFLAGS= -g -Wall -std=c++11 $(shell pkg-config --cflags ${LIBS}) LDFLAGS= $(shell pkg-config --static --libs ${LIBS}) all: logger $(PROG) $(PROG): $(OBJS) mkdir -p ./bin/ $(CC) -g -rdynamic -o $(PROG) $(LDFLAGS) -lbfd -liberty $(OBJS) rm -f $(OBJS) logger: cd ./src/SimpleLogger; make clean all clean: rm -f $(PROG) $(OBJS) 

我真的不确定我需要做什么才能让它正常连接。 有什么我想念的吗?

更改:

 $(PROG): $(OBJS) mkdir -p ./bin/ $(CC) -g -rdynamic -o $(PROG) $(LDFLAGS) -lbfd -liberty $(OBJS) rm -f $(OBJS) 

对此:

 $(PROG): $(OBJS) mkdir -p ./bin/ $(CC) -g -rdynamic -o $(PROG) $(LDFLAGS) $(OBJS) -lbfd -liberty rm -f $(OBJS) 

必须使用编译命令将库文件放在库之前。 看到这个问题 。