有类似的主题,但我没有设法找到答案。
我正在使用代码:: blocks IDE构建测试控制台应用程序。它需要为HD Homerun DVB调谐器加载名为libhdhomerun.so(来自Silicon Dust)的DVB共享库。 HDHR调谐器库已经使用./configure, ...,sudo make install,ldconfig等安装,它们都可以使用它们的实用程序(同时构建)。所以 - 图书馆就在那里,确定。
库将自身安装到/ usr / local / lib中。实际上没有符号链接,因为有其他共享库,但它最后也没有任何版本信息。
当我构建代码(明确包含/usr/local/lib/libhdhomerun.so)时,ld阶段失败,
"cannot find -lhdhomerun.so"
我尝试了包括(/ usr / local / lib /)libhdhomerun.so,hdhomerun.so,libhdhomerun,hdhomerun的所有组合,为它创建一个符号链接等等。没有任何区别。
奇怪的是,我以完全相同的方式包含了udev,mysql和libdvbv5共享库,并且它们很好。唯一不会链接的是hdhomerun。
如果我从命令行“ld -lhdhomerun.so --verbose”运行手动详细链接步骤,它确实会失败 - 因为它试图找到libhdhomerun.so.so。
感激地收到任何建议 - 但我确实需要继续使用code :: blocks。
答案 0 :(得分:0)
要正确链接库,您需要在您的环境中定义库路径,并使用正确的库名和-l标志。库路径在LD_LIBRARY_PATH
环境变量中定义。对于-l
g++
的标记,不应提供库扩展名 - 正如您已经观察到的那样,因此在您的情况下它应该是这样的:
-lhdhomerun