arm-linux-gnueabihf-ld:无法识别的选项'-Wl, - gc-sections'

时间:2018-01-29 00:39:31

标签: linux qt raspberry-pi

我正在使用此link交叉编译覆盆子Pi的Qt,我正面临一些问题。在做sudo make时,我得到以下内容:

~/rpi-xtools/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-ld -Wl,--gc-sections -Wl,-O1 -fuse-ld=gold -o ../../../bin/moc .obj/moc.o .obj/preprocessor.o .obj/generator.o .obj/parser.o .obj/token.o .obj/main.o   -L/home/ytan/rpi-xtools/delme/qtbase/lib -lQt5Bootstrap -lpthread 
/home/ytan/rpi-xtools/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-ld: unrecognized option '-Wl,--gc-sections'

我知道-Wl,--gc-sections是arm-linux-gnueabihf-g ++的命令而不是arm-linux-gnueabihf-ld,但我不知道我应该深入研究哪些Makefile来改变arm-linux- gnueabihf-ld to arm-linux-gnueabihf-g ++。

我真心地寻找你,是网上神秘的居民。

1 个答案:

答案 0 :(得分:0)

arm-linux-gnueabihf-ld: unrecognized option '-Wl,--gc-sections'

您正在直接调用链接器。链接器获取--gc-sections,而不是-Wl,--gc-sections

如果您通过编译器驱动程序进行链接,那么您将使用-Wl,--gc-sections。该配方看起来像arm-linux-gnueabihf-gcc ... -o moc -Wl,--gc-sections

确保您的编译标记包括-ffunction-sections和/或-fdata-sections

  

我不知道我应该将哪个Makefile改为arm-linux-gnueabihf-ld to arm-linux-gnueabihf-g ++。

由于直接调用链接器,并且项目设置正确,因此您只需要:

    CPPFLAGS="-DNDEBUG -g2 -O3 ... " \
    CFLAGS="... -ffunction-sections -fdata-sections" \
    CXXFLAGS="... -ffunction-sections -fdata-sections" \
    LDFLAGS="... --gc-sections" \
./configure <other config options>

如果您有一定的灵活性,那么您应该通过编译器驱动程序转换为链接。这是Clang和GCC人员推荐的内容,它可以让您轻松完成诸如使用清理程序(-fsanitize=address-fsanitize=undefined等)测试程序。编译器将为您添加适当的库。否则,您需要自己解决这些问题(在某些系统上非常重要,例如OS X)。