如何编译,设置和创建库.so在linux中共享

时间:2013-12-20 13:51:29

标签: c++ linux shared-libraries configure building

我是linux新手编译开源共享库。

我下载后,请说谷歌的gTest,我解压缩了文件夹。

cd gtest.x.x.x

然后

configure

然后我做了,

make all

一堆编译,然后链接是预期的,我是对的吗?

然后在make all结束后,我检查了lib文件夹,找到了

libgtest.lalibgtest_main.la

  1. 是我当场的期望,还是我遗失了什么?
  2. 经过好的编译,或者说成功的一个,库应该是lib资源库中的资金,不是吗?
  3. 我现在应该做什么,以及如何找出我做错了什么?
  4. 我应该期待.so个文件,而不是.la

    编辑, 当我做安装时,我得到以下输出: 'make install' is dangerous and not supported.

2 个答案:

答案 0 :(得分:1)

*。la对象也是库,这就是为什么你可以在lib文件夹中找到它们的原因。但他们没有分享。 * .so(所以代表共享对象)。

当你运行规则all(make all )或者只是make。您正在订购 make 命令,该命令运行所有写入 Makefile 文件的规则。

在这个文件中(还有其他的,比如CMakeList等)是开发人员编写的(除此之外的东西)应该如何编译和链接程序/库。所以,如果Makefile默认将gTest库编译为 static (我认为就是这种情况),你就找不到任何* .so。

尝试在构建库时添加--shared标志。另外,您应该阅读有关gTest的一些信息,并了解作者是否因为特定原因而这样做。

答案 1 :(得分:1)

库包含.sc文件,因此在lib文件夹中的隐藏文件夹中。

使所有人走完以下路径

libraryProject/lib/.lib

lib文件夹中有一个隐藏的lib文件夹。

gtest/lib/.lin/libName.so