c - 使用非标准名称链接 C 库

标签 c gcc linker

我正在使用 gcc 编译一个程序,我需要链接到一个非标准名称的 C 库;它被称为 stuff.a 而不是 libstuff.a

我无法更改文件名(权限问题)。

我不想包含完整的库(即使用 gcc program.c stuff.a -oprogram)

我想编译为 gcc program.c -L/path/to/library/-lstuff -oprogram 但 gcc 找不到库(因为它不叫 libstuff.一个).

我正在开发 Linux 机器。

如何完成(动态)链接?

编辑:

谢谢大家,对于一个措辞不佳的问题,我深表歉意。

我什至没有共享对象(我想我可以动态链接到一个 *.a 文件),所以这让你们中的许多人感到困惑。再次为我的无知道歉。

我最后做的是在本地目录中创建共享对象,将位置附加到我的 LD_LIBRARY_PATH 环境变量,然后再次链接。

它就像一个魅力(从 1.3M 可执行文件减少到 5.8K)。

再次感谢。

最佳答案

你应该看看 gcc manual :

The only difference between using an -l option and specifying a file name is that -l surrounds library with 'lib' and '.a' and searches several directories.

使用 stuff.a 作为参数没有错。

关于c - 使用非标准名称链接 C 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2112055/

相关文章:

c - 客户端与 mqtt 代理断开连接后释放端口

C 打印两个字符串的第二个字符串值

c - 悬空的 else 查询(或阅读不良代码的练习)

计算 C 中空格、制表符的数量

linux - 编译 curl 库时出错

c - Malloc、Ralloc、免费

c - 为什么某些 C 编译器会在奇怪的地方设置函数的返回值?

c++ - Win32 应用程序 LNK2001 : unresolved external symbol _main

c++ - 尝试从 dll 调用 extern "C"函数的链接器错误

compiler-construction - 如何在 Eclipse 和 Windows 中指向我的编译器和链接器?