【问题标题】:How to compile a file using a shared library?如何使用共享库编译文件?
【发布时间】: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


【解决方案1】:

您需要拥有来自.h 文件的接口定义,并且该文件必须位于当前目录或包含搜索路径上的目录中。

请注意,在某些系统上,文件名和路径取决于大小写。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-21
    相关资源
    最近更新 更多