如何使用SCons与静态库链接?

约翰·史密斯

我正在尝试通过以下方式链接使用SCons创建的静态库:

//LIBSUFFIX and PREFIX are already set
env.Replace(LINKCOM = '$LINK $LINKOPTFILE $LINKMIXEDOPTIONS $LINKERR $LINKMAPFILE $SOURCES $LINKFILE $_LIBDIRFLAGS $_LIBFLAGS -o $TARGET')
env.Library('libraryname', ['file1.o','file2.o'])
env.Program(target = '', LIBS = 'libraryname', LIBPATH = 'path', source = Glob(*.c))

我的问题如下:在LINKCOM中添加的库没有其位置ex :libraryname.a库中已经包含的文件也将传递给链接器命令(例如SCons无法识别我正在使用它们创建库)

例如:我必须从以下来源创建程序:main.c s1.c s2.c s3.clibrary_s.as1.o创建s2.o

SCons传递的链接器命令:

linker.exe linkerflags s1.o s2.o s3.o library_s.a -o target.exe

如何将每个目录_LIBDIRFLAGS与其相应的库连接起来,如何使SCons知道我正在从某些源文件创建库?

编辑:这是链接器命令应如下所示的方式:

'linker.exe' linkerflags s3.o pathtolibrary/library_s.a -o target.exe

备注:由于library_s.a是从s1.o和s2.o创建的,所以我希望SCons仅传递s3.o和库

Dirkbaechle

您只需将lib的完全必需的路径添加到Program()调用中即可:

lib_a = env.Library('libraryname', ['file1.c','file2.c'])
env.Program('target', ['main.c', 's3.c', 'pathtolibrary/' + str(lib_a[0])])

如果告诉Glob()您查找所有C文件(“ *.c”),它将返回完整列表。如果这不是您想要的,则必须Glob手动或使用从v2.3.5开始可用的“排除”选项来过滤调用结果(仅适用于VariantDirs,此功能仅从v2.4.1中的相应修订开始!) 。

不幸的是,您对SCons的运行方式的期望,对lib源文件和目标文件之间的依赖关系的自动检测的期望与现实不符。通常要做的是重组构建,以使该lib的所有C文件都位于与主要源文件不同的子文件夹中。然后,您可以Glob(*.c)再次使用,而不会出现干扰源列表。请注意,如何像s2.o第二次那样将目标文件添加到最后的链接步骤实际上可能有意义,例如,在循环依赖的情况下...因此,SCons(或任何其他构建系统)将无法全部解决这个问题反正本身。解决此类问题将始终需要用户的输入。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

iOS静态库在错误的paltform上使用Scons链接器搜索进行构建

来自分类Dev

使用CMake链接静态库

来自分类Dev

如何使用pkg-config静态链接库

来自分类Dev

如何使用Visual D链接到静态库中的包

来自分类Dev

cmake如何链接未使用libxxx.a命名的静态库?

来自分类Dev

使用CMake将共享库与静态链接

来自分类Dev

使用G ++静态链接Matio库

来自分类Dev

如何使用链接到该静态库的项目来计算XCode 5中的静态库的代码覆盖率?

来自分类Dev

在scons的“程序”命令中使用“ LIBS”无法找到静态库,为什么?

来自分类Dev

如何创建自动链接到动态库的静态库?

来自分类Dev

如何创建自动链接到动态库的静态库?

来自分类Dev

使用 LTO(链接时间优化)静态链接的可执行文件:如何使用以前构建的库制作它

来自分类Dev

如何在Android Studio中使用Gradle实验插件0.2.0将静态库(.a文件)与APK链接

来自分类Dev

如何使用make / gcc静态链接除glibc之外的所有库?

来自分类Dev

您如何告诉CMake静态链接到使用find_package找到的包中的库?

来自分类Dev

如何在使用Clion链接到静态库的应用程序中放置断点?

来自分类Dev

使用automake将共享库链接到静态libtool库

来自分类Dev

从静态库动态链接?

来自分类Dev

级联静态库链接?

来自分类Dev

链接静态库并解析

来自分类Dev

链接静态库的问题

来自分类Dev

链接静态库

来自分类Dev

GCC链接静态库

来自分类Dev

如何使用libtool从大量静态库中创建静态库

来自分类Dev

如何静态链接最初打算用作Tcl扩展的库?

来自分类Dev

在ARM交叉编译时,如何选择要链接的静态库?

来自分类Dev

如何从共享生成静态库(.a)以进行动态链接

来自分类Dev

如何在VS2019中静态链接OpenSSL库?

来自分类Dev

如何将C ++静态库链接到C程序?

Related 相关文章

  1. 1

    iOS静态库在错误的paltform上使用Scons链接器搜索进行构建

  2. 2

    使用CMake链接静态库

  3. 3

    如何使用pkg-config静态链接库

  4. 4

    如何使用Visual D链接到静态库中的包

  5. 5

    cmake如何链接未使用libxxx.a命名的静态库?

  6. 6

    使用CMake将共享库与静态链接

  7. 7

    使用G ++静态链接Matio库

  8. 8

    如何使用链接到该静态库的项目来计算XCode 5中的静态库的代码覆盖率?

  9. 9

    在scons的“程序”命令中使用“ LIBS”无法找到静态库,为什么?

  10. 10

    如何创建自动链接到动态库的静态库?

  11. 11

    如何创建自动链接到动态库的静态库?

  12. 12

    使用 LTO(链接时间优化)静态链接的可执行文件:如何使用以前构建的库制作它

  13. 13

    如何在Android Studio中使用Gradle实验插件0.2.0将静态库(.a文件)与APK链接

  14. 14

    如何使用make / gcc静态链接除glibc之外的所有库?

  15. 15

    您如何告诉CMake静态链接到使用find_package找到的包中的库?

  16. 16

    如何在使用Clion链接到静态库的应用程序中放置断点?

  17. 17

    使用automake将共享库链接到静态libtool库

  18. 18

    从静态库动态链接?

  19. 19

    级联静态库链接?

  20. 20

    链接静态库并解析

  21. 21

    链接静态库的问题

  22. 22

    链接静态库

  23. 23

    GCC链接静态库

  24. 24

    如何使用libtool从大量静态库中创建静态库

  25. 25

    如何静态链接最初打算用作Tcl扩展的库?

  26. 26

    在ARM交叉编译时,如何选择要链接的静态库?

  27. 27

    如何从共享生成静态库(.a)以进行动态链接

  28. 28

    如何在VS2019中静态链接OpenSSL库?

  29. 29

    如何将C ++静态库链接到C程序?

热门标签

归档