gpt4 book ai didi

linux - CMake 警告与隐式目录中的库发生冲突

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:17:47 25 4
gpt4 key购买 nike

我有一个使用“buildroot 2013.02”和“Sourcery CodeBench ARM 2012.09”创建的交叉工具链。在这个工具链中,我有两次库 libX11.so:

  • at/opt/...linux-gnueabi/sysroot/usr/lib 是要与目标文件链接的 ARM 对象
  • 在/opt/vibkart/toolchain-arm/usr/lib 是与主机文件链接的 x86-64 对象

出于某种原因,cmake 混淆了路径,我收到了这个警告:

CMake Warning at CMakeLists.txt:194 (add_executable):
Cannot generate a safe runtime search path for target vibkart because
files in some directories may conflict with libraries in implicit
directories:

runtime library [libX11.so.6] in /opt/vibkart/toolchain-arm/usr/arm-buildroot-linux-gnueabi/sysroot/usr/lib may be hidden by files in:
/opt/vibkart/toolchain-arm/usr/lib

Some of these libraries may not be found correctly.

我正在使用以下工具链文件.cmake:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_C_COMPILER /opt/vibkart/toolchain-arm/usr/bin/arm-none-linux-gnueabi-gcc)
set(CMAKE_CXX_COMPILER /opt/vibkart/toolchain-arm/usr/bin/arm-none-linux-gnueabi-g++)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -mfloat-abi=softfp -mfpu=neon -march=armv7-a -mtune=cortex-a8 -O2 " CACHE STRING "Buildroot CFLAGS" FORCE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -mfloat-abi=softfp -mfpu=neon -march=armv7-a -mtune=cortex-a8 -O2 " CACHE STRING "Buildroot CXXFLAGS" FORCE)
set(CMAKE_INSTALL_SO_NO_EXE 0)
set(CMAKE_PROGRAM_PATH "/opt/vibkart/toolchain-arm/usr/bin")
set(CMAKE_FIND_ROOT_PATH "/opt/vibkart/toolchain-arm/usr/arm-buildroot-linux-gnueabi/sysroot")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(ENV{PKG_CONFIG_SYSROOT_DIR} "/opt/vibkart/toolchain-arm/usr/arm-buildroot-linux-gnueabi/sysroot")
set(OPENGL_INCLUDE_DIR "/opt/vibkart/toolchain-arm/usr/include/")
set(OPENGL_gl_LIBRARY "/opt/vibkart/toolchain-arm/usr/lib/libGLESv2.so")

问题:

  1. 这些路径在哪里定义的?
  2. 如何从交叉编译中排除 x86 库路径?

提前致谢!

最佳答案

感谢Brad King我意识到每当我链接到该目录的库时都会添加该路径。

由于 toolchainfile.cmake 中的条目错误,添加了 x86-64 路径。因此,更改以下行解决了问题:

-set(OPENGL_INCLUDE_DIR "/opt/vibkart/toolchain-arm/usr/include/")
+set(OPENGL_INCLUDE_DIR "/opt/vibkart/toolchain-arm/usr/arm-buildroot-linux-gnueabi/sysroot/usr/include/")
-set(OPENGL_gl_LIBRARY "/opt/vibkart/toolchain-arm/usr/lib/libGLESv2.so")
+set(OPENGL_gl_LIBRARY "/opt/vibkart/toolchain-arm/usr/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libGLESv2.so")

关于linux - CMake 警告与隐式目录中的库发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27452265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com