c++ - 如何将静态库永久添加到 Ubuntu 系统?
问题描述
大家好,我最近创建了一个 C++ 项目,我将代码放入header.h和header.cpp文件中,并成功创建了一个名为header.a的静态库。现在我将header.h文件放入系统的 /usr/local/include 位置,将header.a放入 /usr/local/lib 以便将我的库“安装”到机器中。现在,如果我想使用这个库,我必须执行以下步骤:
- 假设我正在使用main.cpp程序,我在程序的顶部包含这一行:
include <header.h>
- 然后,我用这个命令编译:
g++ main.cpp /usr/local/lib/header.a
一切都好。但我想找到一种方法将header.a库永久“存储”到系统中,以便像普通的标准 C++ 头文件一样使用它,以这种方式简化编译:
g++ main.cpp
有没有办法做到这一点?非常感谢大家。
解决方案
你不能,并且没有系统库会在没有被告知的情况下自动链接。
但是,您可以将路径添加/usr/local/lib
到链接器的默认路径以查找库(对于 Ubuntu,IIRC 默认情况下不在其中),这意味着您只需添加-l
(小写 L)选项即可与库链接。
但请注意,图书馆应该有一个lib
前缀。就像在libheader.a
.
然后链接-lheader
:
g++ main.cpp -lheader
-L
如果您有其他非标准路径,或者您无法编辑要使用的系统配置,还可以选择将路径添加到链接器搜索的路径列表中/usr/local/lib
:
g++ main.cpp -L/usr/local/lib -lheader
库文件仍然需要lib
前缀。
推荐阅读
- ios - 使用 UICollectionView 为单元格加载不同的高度
- c++ - 如何在 C++ 中将数字添加到字符串的末尾?
- jquery - jQuery - onClick 获取此属性 id 的等于变量 html 的内容
- azure - 我可以关闭 Azure 应用服务以节省 azure 的成本吗?
- spring-security - 如何通过 Gradle 安装快照 jar?
- c# - 为什么 TaglibSharp 无法读取我的 Id3v2 标签?
- go - MaxActive / wait 可能不起作用,仍在创建数千个连接
- python - 数据类型有问题。不能在整数和(函数?)之间使用 > 运算符
- android - 如何使背景覆盖 recyclerView?
- ios - 边框颜色没有改变