zoukankan      html  css  js  c++  java
  • scons 库文件生成和链接

    一、编译库文件
    1. 编译库文件 Library()
    实例:

    ### hello.c 文件内容
    int main()
    {
    printf("Hello, world! ");
    }

    ### goodbye.c 文件内容
    int main()
    {
    printf("Good Bye! ");
    }

    ### SConstruct 文件内容
    Library( "hello", ['hello.c', 'goodbye.c'] )

    在cmd下编译,可以发现会生成 hello.lib 这个库文件。

    PS C:UsersAdministratorDesktopscons_study02> scons -Q
    cl /Fogoodbye.obj /c goodbye.c /nologo
    goodbye.c
    cl /Fohello.obj /c hello.c /nologo
    hello.c
    lib /nologo /OUT:hello.lib hello.obj goodbye.obj
    PS C:UsersAdministratorDesktopscons_study02>

    如果Library 不定义名字,则会使用第一个源文件的名字命名。

    2. 使用源代码或者目标文件编译库文件
    Library中的参数可以是 源文件,也可以时 .o 的中间文件。

    ### SConstruct 文件内容
    Library( "hello", ['hello.c', 'goodbye.o'] )

    3. 编译静态库 StaticLibrary()
    Library() 默认是编译静态库的,当然也可以使用StaticLibrary() 来定义编译静态库

    ### SConstruct 文件内容
    StaticLibrary( "hello2", ['hello.c', 'goodbye.c'] )

    4. 编译动态库 SharedLibrary()
    如果想编译动态库(在POSIX系统里)或DLL文件(Windows系统),可以使用SharedLibrary

    ### SConstruct 文件内容
    SharedLibrary( "hello2", ['hello.c', 'goodbye.c'] )

    如下为执行结果: 生成 hello2.dll 文件
    PS C:UsersAdministratorDesktopscons_study02> scons -Q
    link /nologo /dll /out:hello2.dll /implib:hello2.lib hello.obj goodbye.obj

    二、链接库文件
    ## 生成一个名为 foo.lib 的库文件
    Library('foo', ['f1.c', 'f2.c', 'f3.c'])
    ## 编译prog.c 文件,指定库文件为 foo.lib 和 bar.lib, 在当前文件夹中寻找
    Program('prog.c', LIBS=['foo', 'bar'], LIBPATH='.')

    $LIBPATH 用于指定库文件的目录:

    ## linux:
    Program('prog.c', LIBS=['foo', 'bar'], LIBPATH=['/usr/lib', '/usr/local/lib'])

    ## POSIX
    Program('prog.c', LIBS=['foo', 'bar'], LIBPATH='/usr/lib:/usr/local/lib')

    ## Windows
    Program('prog.c', LIBS=['foo', 'bar'], LIBPATH='C:\lib;D:\lib')
    ————————————————
    版权声明:本文为CSDN博主「Jaimex8」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/Ciellee/article/details/87905918

  • 相关阅读:
    BZOJ 2048 2009国家集训队 书堆 数学算法
    maven自动打包上传nexus仓库配置
    让maven项目使用nexus作为远程仓库
    python备份网站,并删除指定日期文件
    Linux系统下yum镜像源环境部署记录
    nginx下后端节点realserverweb健康检测模块ngx_http_upstream_check_module
    Linux新系统的安全优化和内核参数优化
    linux挂载磁盘
    LVS负载均衡下session共享的实现方式-持久化连接
    使用Nginx反向代理和proxy_cache缓存搭建CDN服务器加快Web访问速度
  • 原文地址:https://www.cnblogs.com/hanrp/p/11558080.html
Copyright © 2011-2022 走看看