用于交叉编译库的Linux lib / include组织?

时间:2008-12-16 14:32:47

标签: linux shared-libraries

我们正在桌面Linux下交叉编译嵌入式Linux目标的应用程序。出于测试和其他目的,我们在我们的应用程序中使用静态链接库。我们使用的测试库是CMockery

我的问题是:鉴于我们是交叉编译的,CMockery的静态库和包含文件应该在哪里生效?

如果我们没有进行交叉编译,那就是should go in /usr/local/lib

我们团队的一些建议是:

  • / opt / google / lib和/ opt / google / include
  • / opt / embeddedLinuxDistro / usr / local / share / google / lib(包含)
  • / usr / local / arch / lib(和include)

    任何指针都赞赏!

  • 1 个答案:

    答案 0 :(得分:1)

    注意:写完这个答案后,我的总结将是:

      

    将任何非标准的内容保存到您正在单独使用的Linux发行版中。事实上,即使共享库,也要将不同项目的文件分开。这样可以更轻松地将文件移动到另一台机器,设置多个完整版本进行测试,最重要的是能够从头开始重新创建构建。


    这个决定是非常主观的。

    • 您是否只需要为所有用户提供一个库副本?
    • 它很少改变吗?
    • 如果您的构建计算机起火并且您没有该计算机的备份,那么您可以多快快速地重建您的库和交叉编译器环境?

    我问这些问题,因为如果图书馆经常变化或者不同的用户可能需要不同的版本,那么最好让它变得便携。也就是说,您可以在构建中指定在哪里查找文件。

    在你团队的建议中,我会倾向于包含对项目的引用的路径。这将使一年后(当有人要求您设置另一台构建机器时)更容易重现所有内容。

    最后,我不担心尝试遵守“标准”库位置,因为您不是在创建和管理Linux发行版。此外,大多数人并不比“/ usr / lib”和/ usr / local / lib更了解任何东西,甚至知道那些人的人也不知道差异。

    无论可能是什么,都要为您的项目做最好的事情。