c - 在这里用 gcc 创建/使用共享库有什么问题?

标签 c shared-libraries

libname.h中:

int add_libname(int, int);

libname.c中:

#include "libname.h"

int add_libname(int a, int b)
{
  return a+b;
}

我可以这样构建共享库:

gcc -shared -fPIC libname.c -o libname.so

但我不能在另一个程序test.c中使用它:

#include <stdio.h>
#include "libname.h"

int main(int argc, char* argv[])
{
  printf("%d\n", add_libname(1,5));
}

当我尝试构建它时报告对 add_libname 的 undefined reference ..

这里出了什么问题?

最佳答案

因为 add_libname 需要 (int, int) 你给它 (1+5 = 6) 或只是 (int)

我想你的意思是 add_libname(1, 5);

为了正确编译它,你必须像这样使用 gcc

gcc -o myapp test.c -L. -lname

libname 的 lib 部分被忽略,因为它是隐式的

关于c - 在这里用 gcc 创建/使用共享库有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6729416/

相关文章:

c - 在C中打印双向链表的下一个和上一个值

c++ - 编写自己的分区恢复

c - 获取 ipaddress 的值

C 程序有时会出现段错误

linux - 如何显示包含在C/C++共享库中的头文件和src文件的名称

c - 无法从 C 中的其他模块访问 linux 中共享库的自定义全局函数

linux - ncl:/lib/x86_64-linux-gnu/libssl.so.10: 找不到版本 `libssl.so.10'(ncl 要求)

c++ - 用于管理路径/URL 的库

java - 为什么 MediaType.TEXT_PLAIN 仅在我将 jersey-core-1.16.jar 添加到类路径时才起作用

c++ - CMAKE、SDL2 和 OPENGL : Program binary is too big