c++ - 无法在 Centos 7 上构建 32 位库

标签 c++ linux cmake centos centos7

我有 Centos7 Vagrant 盒子,里面有“devtoolset-7”。

我使用“CMake”来构建和编译我的库。这是 CMakeLists.txt 文件

set(CMAKE_BUILD_TYPE Release)
include_directories("../Include" "/usr/include/libusb-1.0")
add_library(CXIOInterface SHARED 
        CXIOInterface.cpp
        HidInterface_Linux.cpp
        HidDevice_Linux.cpp
        ../Include/Debug.cpp
        app.cpp
        CrcLibrary.cpp
        ContextFunctions.cpp)
set(PROJECT_LINK_LIBS -ludev -lusb-1.0)
target_link_libraries(CXIOInterface LINK_PUBLIC ${PROJECT_LINK_LIBS})
set(CMAKE_CXX_FLAGS "-m32")

当我为 64 位编译它时一切正常。但是当我为 32 位编译它时,我得到错误提示:

/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: skipping incompatible /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/libstdc++_nonshared.a when searching for -lstdc++_nonshared
/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: cannot find -lstdc++_nonshared
collect2: error: ld returned 1 exit status
make[2]: *** [CXIOInterface/libCXIOInterface.so] Error 1 

你们能帮帮我吗,我不知道该怎么办。

已经有一个链接告诉我安装 rpm,但我是 ubuntu 用户而不是 Centos。第一次使用。

https://www.centos.org/forums/viewtopic.php?t=64011

最佳答案

/opt/rh/devtoolset-7/root/usr/libexec/gcc/x86_64-redhat-linux/7/ld: skipping incompatible /opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/libstdc++_nonshared.a when searching for -lstdc++_nonshared

意味着链接器找到的库与 ABI 不兼容,在这种情况下,它不兼容 32 位。

发生这种情况是因为您缺少为此所需的包,就像您添加的链接所述。

首先,找出你安装的devtoolset的当前版本:

rpm -qa | grep devtoolset-7

从输出中,您应该能够轻松找出您现在使用的版本。

然后,尝试运行:

yum install devtoolset-7-libstdc++-devel-7.2.1-1.el7.x86_64.rpm

注意:我使用的是 7.2.1-1,因为这是我在 Google 中搜索时发现的版本,如果您安装了不同的版本,请改用它。

关于c++ - 无法在 Centos 7 上构建 32 位库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56167775/

相关文章:

linux - 在 Mathematica 中运行 ssh 命令

c++ - 用于检查 C++ 方法的 `noexcept` 属性的单元测试

c++ - 努力创建 leptonica 1.74 visual studio 项目

c++ - 具有插入功能的二叉搜索树问题

linux - 无线接入点的DNS配置

c++ - 如何拥有带有子文件夹的通用 make 文件?

c++ - 使用 makefile 编译 C++ 11 程序的简单方法

cmake忽略静态库链接请求

c++ - 如何在 C++ 中返回所有元素均为 1 的二维 vector

c++ - 在模板中传递参数