gpt4 book ai didi

ubuntu - 如何在 Ubuntu 16.04 中添加静态和动态库?

转载 作者:行者123 更新时间:2023-12-04 18:40:46 25 4
gpt4 key购买 nike

基本上,我下载了一个用于 C/C++ 的 SDK,并且我有几个 .so 和 .a 文件。 SDK 没有安装脚本。它只包含标题以及 .so 和 .a 文件。我真的不知道把这些文件放在哪里。

通常,如果我下载一些 SDK,就会有一个安装脚本为我执行此操作。我不必手动执行此操作。我应该把这些文件放在哪里?

最佳答案

在 Unix 和 Linux 中,通常遵循以下约定来使用
目录引用:-

  • /usr: - 内容不是系统关键的
  • /usr/bin - 由供应商/发行版安装的可执行文件的根路径
    供应商/发行版的包管理器
  • /usr/lib - 由供应商/发行版或使用安装的库的根路径
    供应商/发行版的包管理器
  • /usr/include - 由供应商/发行版安装的头文件的根路径或使用
    供应商/发行版的包管理器
  • /usr/local/bin - 系统用户安装的可执行文件的根路径
    root 权限(您),但不使用供应商/发行版的包管理器
  • /usr/local/lib - 你安装的库的根路径,但不是
    供应商/发行版的包管理器
  • /usr/local/include - 你安装的头文件的根路径,但不是
    供应商/发行版的包管理器

  • 为了系统的稳定性,安装或删除文件很重要
    usr/{bin|lib|include}仅使用供应商/发行版的包管理器,
    您可以信任它来了解包的相互依赖关系(按版本)
    而不是搞砸系统。

    另一方面,包管理器不会安装 usr/local 下的文件。
    并且您可以使用 root 权限这样做。所以 usr/local/{bin|lib|include}
    安装可执行文件的合适位置|库|您从中构建的头文件
    为您的包管理器提供或获取现成但未打包的资源。

    这些位置特别适合安装用于构建 C 或 C++ 软件的文件,因为:-
    usr/local/bin是可执行文件的默认搜索路径。
    usr/local/include是头文件的默认编译器搜索路径,所以
    如果您的代码包含,例如
    #include <foo/bar.h>

    你已经安装了 usr/local/include/foo/bar.h ,那么你不
    需要通过编译器任何 -I让它找到该标题的选项。
    usr/local/lib是库的默认链接器搜索路径,因此
    如果您的程序需要链接,例如与 libfoo.a你有
    已安装 usr/local/lib/libfoo.a , 那么你然后你不
    需要通过链接器任何 -L让它找到该库的选项: -lfoo就足够了。

    但是,如果您放置一个共享库,例如 libfoo.sousr/local/lib(或任何地方,就此而言),运行时加载程序将无法找到
    它在运行时,除非您首先刷新了它的共享库缓存。你
    将需要运行:
    ldconfig /usr/local/lib

    在将任何新的共享库放在那里之后。

    不要忘记,您安装的任何二进制文件都无法访问源代码,
    没有打包在您的供应商/发行版的官方存储库中
    包含恶意软件的机会增加。

    关于ubuntu - 如何在 Ubuntu 16.04 中添加静态和动态库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42936911/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com