【发布时间】:2016-11-12 01:21:30
【问题描述】:
我想知道是否可以从代码中指定链接器选项?编译器允许#pragma 指令抑制警告;我们可以将其扩展多远?
【问题讨论】:
-
简而言之,“不”。
-
你为什么问这个问题?请编辑你的问题来激发它并提供更多细节。听起来像XY problem
我想知道是否可以从代码中指定链接器选项?编译器允许#pragma 指令抑制警告;我们可以将其扩展多远?
【问题讨论】:
(我正在考虑在 Linux 系统上隐式链接并使用 GCC 编译器;您可能可以根据您的操作系统调整答案)
不,不可能在代码中指定链接选项,并注意链接器正在处理目标文件(而不是其中的单个函数)。
但是,您的build procedure 可以从源代码中提取链接器选项。例如,如果您有一个包含许多单源程序的目录(即,aa.cc C++ 源文件编译成 aa.bin 可执行文件,bb.cc 编译成 bb.bin 等)你可能有一个 Makefile 提及
%.bin: %.cc
$(CXX) $(CXXFLAGS) $(shell awk /Link:/{print $2} $<) $^ -o $@
并在aa.cc 中发表如下评论:
/* the link option is
Link: -lfoo
*/
顺便说一句,您可能还有一些GCC plugin,其中registers 并处理您特定的#pragma;如果你使用clang 而不是gcc 你也可以有一些Clang plugin;新的 pragma 可以在公共 Sqlite 数据库中添加一些东西,稍后在链接时使用。
所以你可以做一些复杂的事情,但我只是建议你有自己的make rules 来处理你的链接。
【讨论】: