Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编译C/C++;通过简单脚本编程_C_Bash_Scripting_Compilation_Sh - Fatal编程技术网

编译C/C++;通过简单脚本编程

编译C/C++;通过简单脚本编程,c,bash,scripting,compilation,sh,C,Bash,Scripting,Compilation,Sh,我有多个c源文件。我想通过脚本编译它们。我知道我可以通过makefile实现,但我更喜欢简单的脚本 我觉得makefiles太复杂了,所以我正在寻找简单的脚本来编译多个文件,然后在Linux(GNU)中创建一个共享库 我知道如何使用终端编译/构建共享库,所以只想从简单脚本运行我的命令 gcc -c -Wall tbl0.c tbl1.c tbl2.c gcc -shared -Wall -o libtbl.so tbl.c -I. -Wl,-z,defs -L. -lpthread

我有多个c源文件。我想通过脚本编译它们。我知道我可以通过makefile实现,但我更喜欢简单的脚本

我觉得makefiles太复杂了,所以我正在寻找简单的脚本来编译多个文件,然后在Linux(GNU)中创建一个共享库

我知道如何使用终端编译/构建共享库,所以只想从简单脚本运行我的命令

gcc -c -Wall tbl0.c tbl1.c tbl2.c 

gcc -shared -Wall -o libtbl.so tbl.c -I.
    -Wl,-z,defs -L. -lpthread -lm -ldl
有什么帮助吗

  • 只需将命令复制粘贴到文件中,比如
    x.sh

  • x.sh
    所在的目录中键入
    chmod+x x.sh

  • 通过键入
    /x.sh
    运行
    x.sh

  • 我建议你坚持使用Makefile。它们最初可能看起来很复杂,但从长远来看很有用。

    首先:

    chmod +x script.sh
    
    然后说:

    ./script.sh
    
    您的脚本应该是:

    #!/bin/bash
    gcc -c -Wall tbl0.c tbl1.c tbl2.c 
    
    gcc -shared -Wall -o libtbl.so tbl.c -I. -Wl,-z,defs -L. -lpthread -lm -ldl
    

    您是否忘记了第二行中的输入文件?

    对于只有小源文件的项目来说,使用这样的脚本是很好的,并且只有2-4个源文件。一旦你开始破解一个稍大的项目,任何构建系统都会为更快的编译时间付出代价。不仅有make,它确实有一个有趣的语法,还有许多其他的语法。这是你的搜索词。或者,试试scons。@cup:这是我写的,只是更一般。无论如何,目前我也更喜欢烤饼。QMake对于小项目来说非常简单,cmake也可以很好(但也可能非常不实用)。但是,首先查找“buildsystem”。第二个命令是否缺少输入文件?我回答的最后一行:Dalso
    #/bin/bash
    位于脚本顶部;)@jparthj尝试以root用户身份运行它…或者可能是与/sbin/相关的问题,并且这些问题…可能是编译中的标志应该从另一个路径运行,而不是从
    #/bin/bash
    考虑到您的建议,makefile如何比简单的脚本文件更具优势?
    #!/bin/bash
    gcc -c -Wall tbl0.c tbl1.c tbl2.c 
    
    gcc -shared -Wall -o libtbl.so tbl.c -I. -Wl,-z,defs -L. -lpthread -lm -ldl