在 g++ 中包含额外的链接器标志有什么坏处吗?
Is there any harm in including additional linker flags in g++?
我正在 code::blocks 中编写 C++ 代码,并且正在设置构建标志和链接器选项。我不想经常更改设置,所以我一直在用 g++ -Wall -o "%e" "%f" -lSDL -lSDL_image
编译所有内容 (c++)
即使是 sdl 代码为零的东西。我没有看到任何故障,所以我只是想知道,是否有任何理由我不应该始终启用这些标志进行编译。
您可以排除我将针对 SDL 不支持的体系结构进行编译的情况,例如 8 位 avr 等。除了体系结构不兼容之外,这样做还有其他风险吗?
当 gcc 执行链接阶段时,它将从库中搜索丢失的符号。如果库中没有使用任何符号,则不会将该库添加到可执行文件中。
您可以轻松地在 Linux 中进行测试。我编译了一个简单的 C++ 程序,将随机库添加到编译命令中,因为我实际上并没有使用它们,所以不需要它们,因此没有链接到二进制文件中。
所以实际上它可能只会导致编译速度稍微变慢,或者可能会意外地在库中找到一些你不想包含的符号,但它不会导致任何其他问题。
我正在 code::blocks 中编写 C++ 代码,并且正在设置构建标志和链接器选项。我不想经常更改设置,所以我一直在用 g++ -Wall -o "%e" "%f" -lSDL -lSDL_image
即使是 sdl 代码为零的东西。我没有看到任何故障,所以我只是想知道,是否有任何理由我不应该始终启用这些标志进行编译。
您可以排除我将针对 SDL 不支持的体系结构进行编译的情况,例如 8 位 avr 等。除了体系结构不兼容之外,这样做还有其他风险吗?
当 gcc 执行链接阶段时,它将从库中搜索丢失的符号。如果库中没有使用任何符号,则不会将该库添加到可执行文件中。
您可以轻松地在 Linux 中进行测试。我编译了一个简单的 C++ 程序,将随机库添加到编译命令中,因为我实际上并没有使用它们,所以不需要它们,因此没有链接到二进制文件中。
所以实际上它可能只会导致编译速度稍微变慢,或者可能会意外地在库中找到一些你不想包含的符号,但它不会导致任何其他问题。