我正在交叉编译AVR GCC,以便在Android上使用交叉工作台。我需要用LTO支持(-flto和-fuse-linker-plugin)编译它,从而在.config中传递CT_STATIC_TOOLCHAIN=y、CT_CC_GCC_USE_LTO=y、CT_CC_GCC_ENABLE_PLUGINS、CT_CC_SHARED_LIBS和CT_BINUTILS_PLUGINS=y。
这就是它的配置方式(build.log的一部分):
最终gcc编译器调试额外配置通过:'--with-headers=/home/anton/x-tools/HOST-aarch64-linux-gnu/avr/avr/include -with-newlib-启用-线程=无-禁用-共享-
-pkgversion=交叉凳子-NG 1.24.0-rc3.1-f7b1ess-禁用-_cxa_atexit-禁用-libgomp-禁用-libmpx禁用-libmpx-禁用-libssp-禁用-lib求四-禁用-libmpx支持-支持--with-gmp=/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools --with-mpfr=/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools --with-mpc=/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools --启用-lto-with libstdcxx=-static,-Bstatic,-I/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools/include _ -lstdc++ _ -lm =‘x86_64-BUILD_pc-linux-gnu-gcc’CFLAGS=‘O2 -g -g _-lstdc++_-lstdc++=’-o2-g-lm.build/HOST-aarch64-linux-gnu/avr/buildtools/include‘CXXFLAGS=’‘-O2 -g -I/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools/include’CXXFLAGS_FOR_BUILD='-O2 -g -I/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools/include‘LDFLAGS=’-L/home/anton/FOR 8266-2/交叉凳-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools/lib -static -lstdc++ -lm‘CFLAGS_FOR_TARGET=’-idirafter -idirafter CXXFLAGS_FOR_TARGET=‘-idirafter LDFLAGS_FOR=’bin/bash‘’/home/anton/FOR 8266-2/交叉凳-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/src/gcc/configure‘'--build=x86_64-build_pc-linux-gnu’-主机=x86_64-build_pc-linux-gnu‘-target=avr’'--prefix=/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools‘’-with-local-前缀=/home/anton/x-tools/HOST-aarch64-linux-gnu/avr/avr‘'--with-headers=/home/anton/x-tools/HOST-aarch64-linux-gnu/avr/avr/include’‘-具有-newlib’-启用-线程=无‘-禁用-共享’-与-pkgversion=交叉凳-NG 1.24.0-rc3.1-f7b1ess‘-禁用-_cxa_atexit’‘-禁用-libgomp’‘-禁用-linux’‘-禁用-libmpx‘’-禁用-libssp‘’-禁用-lib44‘’-禁用-lib求积-支持‘'--with-gmp=/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools’'--with-mpfr=/home/anton/esp8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools‘’-with-mpc=/home/anton/mpc 8266-2/crosstool-NG/installed/bin/.build/HOST-aarch64-linux-gnu/avr/buildtools‘’-启用-lto‘--具有-宿主-libstdcxx=-静态-libgcc -Wl,-Bstatic,-lstdc++ -lm‘’--启用目标-optspace‘’-禁用-nls‘’-启用-multiarch‘’-启用-language=c,c++‘-启用-plugin’
它会导致以下生成错误:
> liblto_plugin building gcc with plugin support requires a host that supports -fPIC, -shared, -ldl and -rdynamic.它似乎具有静态(不依赖于任何东西)和“使用插件”听起来相互排斥。这是正确的吗?
有没有办法不是用lto_plugin共享库构建它,而是静态地构建它(并且仍然使用-flto进行调用)?
PS。我可以避免静态地链接它,但是我不希望它动态链接:
动态/avr/avr/bin/avr-gcc:
64位LSB可执行文件,ARM aarch64,version 1 (SYSV),动态链接,解释器/lib/ld-,用于GNU/Linux3.7.0,
发布于 2021-08-01 06:27:26
不,这不是gcc的工具链支持的。如果您使用ˋct menuconfigˋ(而不是将self写到ˋ中),您不能同时选择这两种方式,因为有许多这样的限制,所以我不使用静态链接。
https://stackoverflow.com/questions/68234357
复制相似问题