【发布时间】:2013-05-18 20:54:21
【问题描述】:
我最初的问题如下,但它演变为以下相关问题:在链接器语句中的对象之后放置链接器标志有什么问题吗?
当我在 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的那1行后,我进入
make clean all -C release
在命令行中,生成了以下正确的链接语句:
g++ -o "pc2" ./main.o ./sampling.o ./simulation.o -fopenmp -lconfig++
因此,我知道如何修复 makefile 以便构建过程正确。
我不知道的是如何配置 Eclipse,以便它生成的 makefile 将链接器标志(或“选项”?)放置在正确的位置。
【问题讨论】:
-
发布此问题后,我发现我可以将设置>链接器>“命令行模式”中的
${FLAGS}移动到模式规范的末尾。这解决了问题。然而,它提出了一个问题:我是否有任何理由需要链接器标志来位于目标文件之前?
标签: linker makefile eclipse-cdt