Я собираю тестовую программу на clion, используя подсистему windows для linux WSL
. Я использую dlopen
et c. загрузить библиотеку во время выполнения. Я получаю сообщение об ошибке:
CMakeFiles/test.dir/test_add.cpp.o: In function `test_test_add_windows_Test::TestBody()':
/mnt/d/ACrossPlatformCppLibrary/test/test_add.cpp:26: undefined reference to `dlopen'
/mnt/d/ACrossPlatformCppLibrary/test/test_add.cpp:28: undefined reference to `dlsym'
Отчеты , похоже, указывают на то, что мне нужно связать с ld
. Тем не менее, добавление
target_link_libraries(ACrossPlatformCppLibrary "${CMAKE_DL_LIBS}")
не работает, что не удивительно, поскольку похоже, что "${CMAKE_DL_LIBS}"
пусто на windows. Поэтому я попытался вручную указать путь к ld
target_link_libraries(ACrossPlatformCppLibrary "/usr/bin/ld")
Кто-нибудь знает, как связываться с ld
при WSL
?
update
Благодаря комментариям и ответу @squareskittles я заметил, что двоичный файл dl
недоступен в системном пути. При ближайшем рассмотрении не похоже, что двоичный файл dl
вообще существует в WSL
. Вот вырезка и вставка из каталога, я думаю, dl
должен быть в:
$ cd /lib
$ ls
apparmor hdparm libhandle.so.1.0.3 netplan udev
console-setup init lsb open-iscsi ufw
cpp klibc-wBFLvVtxy4xJqEadIBJMa78iJz8.so modprobe.d recovery-mode x86_64-linux-gnu
cryptsetup **ld-linux.so.2** modules systemd
ebtables libhandle.so.1 modules-load.d terminfo