Ошибка ссылок libstdc++.so при попытке использовать pybind11/3.0.1 из conan-2 и cpp23 в wslPython

Программы на Python
Ответить
Anonymous
 Ошибка ссылок libstdc++.so при попытке использовать pybind11/3.0.1 из conan-2 и cpp23 в wsl

Сообщение Anonymous »

В WSL (Ubuntu 24.04) при использовании Conan для создания пакета, связывающего pybind11/3.0.1, полученный исполняемый файл в test_package не запускается.
Даже если исполняемый файл не вызывает напрямую какие-либо функции pybind11, он связывается anaconda3/lib/libstdc++.so.6, который, похоже, не поддерживает cpp23.
  • conanfile.py (для пакета)

Код: Выделить всё

# ...
self.requires("pybind11/[*]") # try to use pybind11, if remove this and corresponding commands in CMakeLists.txt, it links the libstdc++.so in 'usr/lib'
# ...
  • CMakeLists.txt (для пакета)

Код: Выделить всё

# ...
set(CMAKE_CXX_STANDARD 23) # this project uses cpp23
# ...
После удаления self.requires("pybind11/[*]") в conanfile.py и соответствующих команд в CMakeLists.txt он связывает правильный (системный) libstdc++.so и работает нормально.
Короче, без self.requires("pybind11/[*]") все работает нормально. При попытке использовать pybind11 он связывает libstdc++.so с anaconda3/lib, который может не поддерживать cpp23.
Есть ли какое-либо решение такой проблемы при использовании cpp23 и pybind11?
  • Ошибка

Код: Выделить всё

agtb/0.0.6-1115 (test package): RUN: cmake --build "/home/azusa/file/project/AGTB/test_package/build/gcc-14-x86_64-gnu23-release" -- -j20
[ 50%] Building CXX object CMakeFiles/Adjustment_Traverse.dir/src/Adjustment/Traverse.cpp.o
[100%] Linking CXX executable Adjustment_Traverse
[100%] Built target Adjustment_Traverse

======== Testing the package: Executing test ========
agtb/0.0.6-1115 (test package): Running test()
agtb/0.0.6-1115 (test package): RUN: ./Adjustment_Traverse
./Adjustment_Traverse: /home/azusa/anaconda3/lib/libstdc++.so.6: version `GLIBCXX_3.4.31' not found (required by ./Adjustment_Traverse)

ERROR: agtb/0.0.6-1115 (test package): Error in test() method, line 64
self.run(cmd) # self.run(cmd, env="conanrun") leads to the same result
ConanException: Error 1 while executing
Как видите, его удалось собрать, но не удалось запустить. Я почти уверен, что исходный файл никогда не содержит заголовков pybind11.

Подробнее здесь: https://stackoverflow.com/questions/798 ... d-cpp23-in
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»