2017-06-04 91 views
0

安装共享库,我不能安装在Ubuntu this library,或至少编译.cpp库链接到它。我已经完成了Google和StackOverflow的所有答案。不可能与.so文件

好吧,首先我运行cmake,之后运行make(和make install可以肯定)。不过,如果我运行g++ xxx.cpp -lcrb -o test,则会出现此错误:fatal error: CRNB.h: No such file or directory。图书馆不喜欢被人还未安装,所以我的libcrn.so文件复制到/usr/lib,我跑sudo ldconfig加载它。现在...

  • sudo ldconfig -n -v /usr/lib/说,它(不是复制.so文件之前)已正确安装。
  • g++ -lcrn说,它的正确安装,因为回报undefined reference to 'main'而不是cannot find -lcrn(如复制.so文件之前)
  • ldd /bin/ls没有列出库,这意味着它没有安装

不管怎么说,试图编译仍抛出相同的错误。我也曾尝试...

  • ...创建一个.conf文件,并将其添加到文件夹/etc/ld.so.conf.d/
  • ...到creaty的.so文件的符号链接/usr/lib
  • .. 。重复这一切的解决方案也/usr/local/lib/lib文件夹
  • ......所有这一切的文件夹添加到/etc/ld.so.conf路径
  • ...到LD_LIBRARY_PATH出口到T的路径他.so档案

和许多更相似。正如你可以看到所有这些都是一样的,所以很显然我失去了一些重要的东西。任何人都知道它可能是什么?

非常感谢!

+0

'致命错误:CRNB.h:没有这样的文件或directory'意味着它无法找到**头文件**'CRNB.h' 。在你的尝试中,你从未尝试过使用这个文件做些什么。实际上,在'cmake' - 'make' - 'make install'后,安装了库**,但它安装了*本地*,位于'install_3.9.5'子目录下。因此,您可以使用库,但需要提供适当的附加包含目录(''I'gcc'标志)和链接目录('-L'标志)。 – Tsyvarev

回答

1

您需要用“-I”标志指定包含目录,或将其导入到您的系统。

尝试:

g++ src_name.cpp -L./your/library -lcrn -I./your/headers -o out_name -std=c++11 

或者:

您可以从libcrn复制包含文件( “* .H”),以 “在/ usr /本地/包括/” 和库“的/ usr/local/lib目录/”如果它不存在,然后:

g++ src_name.cpp -lcrn -o out_name -std=c++11 
+0

我忘记将包含文件复制到/ usr/local/include。这样它就可以和你的最后一条命令一起工作。谢谢! – Maximetinu