Linux 了解目标链接库
我是Linux新手。我在CMakeLists.txt中看到以下内容:Linux 了解目标链接库,linux,ubuntu,cmake,Linux,Ubuntu,Cmake,我是Linux新手。我在CMakeLists.txt中看到以下内容: target_link_libraries(app wiringPi serializer iothub_client iothub_client_mqtt_transport umqtt
target_link_libraries(app wiringPi
serializer
iothub_client
iothub_client_mqtt_transport
umqtt
aziotsharedutil
ssl
crypto
curl
pthread
m
ssl
crypto)
我的问题/理解是:;通过这样做
ldconfig-p | grep
时
有时我发现输出如下,有时什么都没有,为什么/usr/lib/arm-linux-gnueabihf
libcurl.so.4(libc6,硬浮点)=>/usr/lib/arm-linux-gnueabihf/libcurl.so.4
libcurl-gnutls.so.4(libc6,硬浮点)=>/usr/lib/arm-linux-gnueabihf/libcurl-gnutls.so.4 pi@raspberrypi:~$ldconfig-p| grep wiringPi
libwiringPiDev.so(libc6,硬浮点)=>/usr/local/lib/libwiringPiDev.so
libwiringPiDev.so(libc6,硬浮点)=>/usr/lib/libwiringPiDev.so
libwiringPi.so(libc6,硬浮点)=>/usr/local/lib/libwiringPi.so
libwiringPi.so(libc6,硬浮点)=>/usr/lib/libwiringPi.so
wiringPi
、序列化程序
等必须在该目标的链接阶段链接到目标“app”。它并没有提到图书馆本身的建设,通常情况下,人们期望图书馆已经可用,而不是建成
ldconfig-p | grep
时,对于上述库,有时我会发现如下输出,有时
没什么,为什么ldconfig
报告动态链接器已知的库。这与在编译时运行的链接器不同,而且两者所知道的目录和库也不一定相同。ldconfig
无法列出给定库的原因包括:
user/lib
下,有些在/usr/lib/arm-linux-gnueabihf
target\u link\u库
不是其中的一部分
wiringPi
、序列化程序
等必须在该目标的链接阶段链接到目标“app”。它并没有提到图书馆本身的建设,通常情况下,人们期望图书馆已经可用,而不是建成
ldconfig-p | grep
时,对于上述库,有时我会发现如下输出,有时
没什么,为什么ldconfig
报告动态链接器已知的库。这与在编译时运行的链接器不同,而且两者所知道的目录和库也不一定相同。ldconfig
无法列出给定库的原因包括:
user/lib
下,有些在/usr/lib/arm-linux-gnueabihf
这不是CMake的功能,而是所选择的工具链及其配置(在Linux上,通常是GNU工具链,以GCC为特色)。通常可以安全地假设工具链默认使用所有正确的标准库目录。CMake有时也可以被成功地指示在其他可能的位置搜索特定的库,但是
target\u link\u libraries
不是其中的一部分。当您传递给target\u link\u libraries
一个不是目标的普通名称(不是路径)时,CMake只会将该名称转换为链接器标志。例如,在Linux上,这是一个标志
-l<library-name>
-l
因此,有关搜索库的问题,您可以直接向链接器提出-CMake在此退出游戏。当您通过时