Невозможно собрать 32-битную библиотеку на Centos7 - PullRequest
0 голосов
/ 16 мая 2019

У меня есть ящик 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

1 Ответ

0 голосов
/ 17 мая 2019

/ opt / rh / devtoolset-7 / root / usr / libexec / gcc / x86_64-redhat-linux / 7 / ld: пропуск несовместимый / opt / rh / devtoolset-7 / root / usr / lib / gcc / x86_64 -redhat-linux / 7 / libstdc ++ _ nonshared.a при поиске -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, если вы установили другую версию, используйте ее вместо.

...