编译选项用于使优化人员更好地与编译器交互、更好地与编译器交互,编译器会根据优化人员所加入的编译选项调用内部对应的功能。编译选项包括前端选项、优化选项、代码生成选项、链接选项及其他选项。 1.1 前端选项 编译人员可以通过编译选项指定预处理、语言选择和模式等对程序的前端编译过程予以干预。下图列出了不同类别的...
使用__attribute ((visibility))设置符号可见 通常情况下,推荐使用设置全局的-fvisibility=hidden编译参数来隐藏所有的符号,只在需要导出的函数定义处,使用attribute((visibility("default")))设置为导出。 2. -Wl,-Bsymbolic 编译器传递给链接器的一个参数,用于在链接过程中将符号只链接到本库中的符号,而不是绑定到...
环境变量、C++/CX 编译器选项和链接器选项支持为 Windows 运行时生成应用。 库路径 %LIBPATH% 环境变量指定用于搜索 .winmd 文件的默认路径。 编译器选项 选项说明 /ZW /ZW:nostdlib启用 Windows 运行时语言扩展。 nostdlib参数可阻止编译器使用标准的预定义搜索路径来查找程序集和 .winmd 文件。
该选项是 GCC 编译器传递给链接器(通常是 GNU 链接器 ld)的选项,用于解决复杂的符号依赖问题,尤其是在静态库之间存在循环依赖的时候。 例如:gcc -o myprogram myprogram.c -Wl,--start-group lib1.a lib2.a lib3.a -Wl,--end-group。 `
-shared生成一个可执行文件可以动态链接的共享库,这是个链接选项,编译生成共享库的目标文件的源文件时通常需要添加编译选项-fpic; -fpic 生成位置无关代码,在编译共享库的目标文件时使用,这是一个编译选项; 1 2 gcc-ctest.c -otest.o -fpic gcc-shared -o libtest.sotest.o ...
-no-pie是一个编译器和链接器选项,用于告诉编译器和链接器生成非位置独立的可执行文件(non-Position Independent Executable,简称 non-PIE)。这个选项通常用于 GCC 和其他兼容的编译器。 位置独立代码(Position Independent Code,简称 PIC)是一种编写代码的方式,使得生成的代码可以在内存中的任何位置运行,而不需要修改...
链接(Linking)gcc 命令只能编译C++源文件,而不能自动和C++程序使用的库链接。因此,通常使用g++命令来完成C++程序的编译和链接,该程序会自动调用gcc实现编译。1. 总体选项-c:只激活预处理、编译和汇编过程,但不做link,只生成目标文件-o:指定输出文件,未指定时,默认为a.out-S:只激活预处理和编译,生成.s的汇编文...
A.1.2 编译时选项和链接时选项 下表列出了在链接时和编译时都必须指定的选项。 表A–2 编译时选项和链接时选项表
GCC在链接的时候以section为单元处理,所以可以尝试使用-ffunction-sections/-fdata-sections将每个函数或者符号创建成独立的section,然后结合选项-Wl,--gc-sections让链接器忽略用不到的section,这样就可以减少目标可执行程序的大小。其中-Wl表示将后面的参数传递给链接器,所以也可以直接设置链接器选项。