C引入开源库的编译步骤

目前我有一个C程序,想使用一个开源库h3,它的文件结构如下:

clipboard.png

我引用了.h文件后,然后使用gcc报错找不到so文件。
搜了很多资料后发现有提到需要先进行cmake,再使用cmake出来的文件。
我在自己的机器上直接cmake ./报错了,没法再试下去了。

我想问一下引入一个开源库后再编译的的一般步骤是什么,有没有推荐文章给参考一下?
(搜了好久,全是没用的。。)

另外,我还想引入另一个库,它只有.c和.h文件,同放在根目录直接编译时 可以 gcc main.c open_source.c -o main
但我想把这些类库都放到一个clib文件夹下统一管理,不知道怎么编译了。。。

谢谢。


问题补充:
我想知道一下一般的编译步骤或项目结构。
编译步骤如先编译成 .o文件,然后再链接成静态或动态库 .a.so,最后再链接源程序之类的(找了几个小时资料总结的= =)。
项目结构 在根目录下会有哪些目录,都存放什么内容(如include文件夹里放.h文件)之类的。

阅读 9.5k
3 个回答

先读项目的readme文件或read1st文件,它们会告诉你它能提供什么,该怎么做。部分项目还会有 installation 文件指导。

然后根据项目的许可证、项目提供的输出 和你自己的需求 选择是否使用该项目 以及以何种方式使用该项目。

要看你打算如何引入开源库:

  • 源码引入:这种比较困难,一般你要理解它的构建方式(cmake,autoconf等),如果跟你的不兼容,需要花时间移植;如果兼容,移植成本相对低一些。

  • 库引入:这种方式说白了就是用第三方代码编译出库文件(.so,.a等,这里需要注意看是不是用了libtool)。然后在编译你自己程序的时候,使用-l来告诉编译器要链接的库。举个例子;如果第三方库编译出来叫libaa.so,那么你应该这么写:gcc -o xx ... -laa,最后的-laa就是链接libaa这个库了。关于库文件的位置,一般来说规范的第三方库都会有个install的过程,将库放到/usr/lib64或/usr/lib下面。默认情况下这个目录是链接器会去找的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题