【问题标题】:Link static library when building a shared library in gcc在 gcc 中构建共享库时链接静态库
【发布时间】:2013-06-06 11:06:08
【问题描述】:

我正在尝试为 jni 调用构建一个共享库。我在构建时使用 -shared 开关创建了一个静态库。我现在需要构建一个依赖于这个静态库的共享库。我在构建共享库时尝试使用 -l 。构建失败,说我从静态库中包含的头文件不可用。我到底应该怎么做?

【问题讨论】:

    标签: gcc java-native-interface shared-libraries


    【解决方案1】:

    -I/path/to/static/library/headers添加到CFLAGS,将-L/path/to/static/library添加到LDFLAGS,它将不再抱怨。

    【讨论】:

    • 我创建静态库的代码库没有将标题分隔到包含文件夹中。它有一个 SRC 文件夹,其中包含所有源文件和头文件。我创建了静态库 gcc -shared 命令,就像我之前发布的那样。 gcc 是否保留文件夹结构?我用 -I/path/to/static/library/SRC 代替 CFLAGS 但这似乎不起作用
    • 好吧@KavithaMadhu,您应该将它们添加到您现有的CFLAGS,而不是将它们用作您唯一的CFLAGS。此外,混合源/头文件也可以。而且,GCC 不会触及您的文件夹结构。而且,当你编译这些东西时,你应该在每个文件上使用gcc -c -fPIC 来生成目标文件,然后使用gcc -shared 将它们链接在一起以形成最终的共享库。
    猜你喜欢
    • 1970-01-01
    • 2013-01-31
    • 2021-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    • 2017-12-27
    • 1970-01-01
    相关资源
    最近更新 更多