【发布时间】:2017-03-05 15:28:02
【问题描述】:
我正在尝试编译一个给定 .so 文件 libfoo.so 的源代码。这个库中唯一的东西是一个只返回一个数字的函数(是的,我知道,高级的东西)。等效的头文件(我提供了两者,但我只应该使用.so)命名为foo.h,函数命名为int foo()。
我的源文件是main.c:
#include <stdio.h>
#include "foo.h"
int main()
{
int x = foo();
printf("%d", x);
return 0;
}
现在,当我尝试编译时,我有以下命令:
gcc -Wall -fPIC -c main.c -o main.o
gcc -Wall -fPIC main.o -o main -lfoo -L.
第一条命令创建目标文件失败,输出如下错误:
fatal error: foo.h: No such file or directory
我使用的是 Ubuntu 16.04。
我还尝试将当前位置导出到 LD_LIBRARY_PATH,正如我在其他一些答案中看到的那样。
export LD_LBIRARY_PATH=$LD_LIBRARY_PATH:machine/Desktop/lib_test
【问题讨论】:
-
foo.h的位置在哪里,你在做什么来告诉你的编译器在哪里可以找到它?
标签: gcc makefile shared-libraries