是否可以从代码中指定链接器选项?

时间:2016-11-12 01:21:31

标签: c linker clang

我想知道是否可以从代码中指定链接器选项?编译器允许#pragma指令抑制警告;我们可以在多大程度上延伸这个?

1 个答案:

答案 0 :(得分:0)

(我正在考虑在Linux系统上隐式链接并使用GCC编译器;您可能可以根据您的操作系统调整答案)

不,不可能在代码中指定链接选项,并注意链接器正在处理目标文件(而不是它们内部的各个函数)。

但是,您的build procedure可以从源代码中提取链接器选项。例如,如果你有一个包含许多单源程序的目录(即http://myapp.com/search/newsearch C ++源文件编译成$('form').submit(function() { var baseUrl = $(this).attr('action'); // or var baseUrl = '@Url.Action("Index", "search")'; var url = baseUrl + '/' + $('clause').val(); // add value for skip if required location.href = url; // redirect return false; // cancel the default submit }); 可执行文件,aa.cc编译成aa.bin等)你可能会Makefile提到

bb.cc

并在bb.bin中发表评论:

%.bin: %.cc
       $(CXX) $(CXXFLAGS) $(shell awk /Link:/{print $2} $<) $^ -o $@
顺便说一句,您可能还有一些GCC plugin registers并处理您的具体aa.cc;如果您使用/* the link option is Link: -lfoo */ 代替#pragma,则还可以使用Clang plugin;新的pragma可以在一个普通的Sqlite数据库中添加一些东西,稍后在链接时使用它。

所以你可以做复杂的事情,但我只是建议让你自己的make rules来处理你的链接。