我最初的问题如下,但它演变为以下相关问题:在链接器语句中的对象之后放置链接器标志有什么问题吗?
当我在 Eclipse 中构建时,会运行以下链接语句:
g++ -fopenmp -lconfig++ -o "pc2" ./main.o ./sampling.o ./simulation.o
这是不正确的,因为lconfig++
必须在目标文件列表之后而不是之前。因此,我修改了 Eclipse 根据项目设置自动生成的 makefile。具体来说,我更改了makefile的这一部分
# Tool invocations
pc2: $(OBJS) $(USER_OBJS)
@echo 'Building target: $@'
@echo 'Invoking: GCC C++ Linker'
g++ -fopenmp -lconfig++ -o "pc2" $(OBJS) $(USER_OBJS) $(LIBS)
@echo 'Finished building target: $@'
@echo ' '
如下:
# Tool invocations
pc2: $(OBJS) $(USER_OBJS)
@echo 'Building target: $@'
@echo 'Invoking: GCC C++ Linker'
g++ -o "pc2" $(OBJS) $(USER_OBJS) $(LIBS) -fopenmp -lconfig++
@echo 'Finished building target: $@'
@echo ' '
然后,在修改了makefile的那一行之后,我输入了
make clean all -C release
在命令行中,生成了以下正确的链接语句:
g++ -o "pc2" ./main.o ./sampling.o ./simulation.o -fopenmp -lconfig++
因此,我知道如何修复 makefile 以使构建过程正确。
我不知道如何配置 Eclipse,以便它生成的 makefile 将链接器标志(或“选项”?)放置在正确的位置。