linux libasan.so,找不到-lasan和libasan_preinit.o

当我使用-fsanitize = address将某个对象链接成二进制文件时,g ++表示标题中的两个lib不存在。 我的G ++版本是:找不到-lasan和libasan_preinit.o

$ /opt/rh/devtoolset-2/root/usr/bin/g++ -v

Using built-in specs.

COLLECT_GCC=/opt/rh/devtoolset-2/root/usr/bin/g++

COLLECT_LTO_WRAPPER=/opt/rh/devtoolset-2/root/usr/libexec/gcc/x86_64-redhat-linux/4.8.2/lto-wrapper

Target: x86_64-redhat-linux

Configured with: ../configure --prefix=/opt/rh/devtoolset-2/root/usr --mandir=/opt/rh/devtoolset-2/root/usr/share/man --infodir=/opt/rh/devtoolset-2/root/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --enable-languages=c,c++,fortran,lto --enable-plugin --with-linker-hash-style=gnu --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.2-20140120/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.2-20140120/obj-x86_64-redhat-linux/cloog-install --with-mpc=/builddir/build/BUILD/gcc-4.8.2-20140120/obj-x86_64-redhat-linux/mpc-install --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux

Thread model: posix

gcc version 4.8.2 20140120 (Red Hat 4.8.2-15) (GCC)

我需要手动编译libasan如果我用G ++?

2016-07-04

zuanyg

+0

#yum install devtoolset-2-libasan-devel libssan' ... –

<think>嗯,用户遇到了CMake的错误,说“CMAKE_EXPORT_BUILD_SETTINGS”是未知的命令。我需要先弄清楚这个错误的原因。首先,我记得CMake有很多内置的命令变量,但可能这个CMAKE_EXPORT_BUILD_SETTINGS已经被弃用了或者用户拼写错误了。 让我查一下CMake的文档。根据CMake的版本历史,CMAKE_EXPORT_BUILD_SETTINGS可能在旧版本中存在,但后来被移除了。比如,可能在CMake 2.8之后就不再支持了。用户可能在使用一个较新的CMake版本,导致这个命令无法识别。 然后,用户提供的引用中有提到使用工具链文件的例子,比如引用[1]里的Toolchain-eldk-ppc74xx.cmake,这说明用户可能在处理交叉编译或者项目配置。这时候,如果用户尝试使用旧的CMake命令,可能会遇到兼容性问题。 接下来,我需要考虑解决方案。首先,建议用户检查CMake的版本,确认是否过时或者太新。如果这个命令已经被弃用,可能需要替换为现代的方法,比如使用CMakePresets.json或者显式导出配置。 另外,用户可能需要更新他们的CMake脚本,避免使用已移除的命令。例如,改用set()或者include()来管理构建设置,或者利用CMake的导出导入功能来处理项目间的依赖。 可能还需要检查用户的CMakeLists.txt文件,看看是否有拼写错误或者其他不兼容的指令。同时,确保所有相关的模块工具链文件正确配置,如引用[1]中提到的工具链文件路径是否正确。 最后,建议用户参考最新的CMake文档社区资源,确保他们的配置方法符合当前最佳实践。这样可以帮助他们避免类似的错误,并提高构建脚本的可维护性。</think>针对CMake报错"unknown command CMAKE_EXPORT_BUILD_SETTINGS"的问题,以下是分步解决方案: 1. **版本兼容性检查** - 该命令在CMake 2.8.12版本后被标记为过时,建议使用CMake 3.0以上版本 - 验证当前CMake版本: ```bash cmake --version ``` - 若版本低于3.0,建议升级至最新稳定版 2. **现代替代方案** - 使用`configure_package_config_file`代替: ```cmake include(CMakePackageConfigHelpers) configure_package_config_file( ${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/ProjectConfig.cmake INSTALL_DESTINATION lib/cmake/Project ) ``` - 或使用`export(EXPORT ...)`命令: ```cmake export(EXPORT MyProjectTargets FILE "${CMAKE_CURRENT_BINARY_DIR}/MyProjectTargets.cmake" ) ``` 3. **项目配置优化** - 在工具链文件中使用现代变量声明方式(参考引用[1]的配置方法): ```cmake set(CMAKE_SYSTEM_NAME Linux) set(CMAKE_C_COMPILER powerpc-linux-gcc) set(CMAKE_CXX_COMPILER powerpc-linux-g++) ``` 4. **错误修复验证** - 添加内存泄漏检查(参考引用[2]的内存管理方法): ```cmake if(CMAKE_BUILD_TYPE STREQUAL "Debug") add_compile_options(-fsanitize=address) link_libraries(-lasan) endif() ``` 5. **构建系统可视化(参考引用[3]的发布方法)** ```cmake add_custom_target(export_settings ALL COMMAND ${CMAKE_COMMAND} -E echo "Build settings exported to build/" VERBATIM ) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值