编译带有依赖项的.c文件

时间:2015-03-23 23:57:23

标签: c makefile

我'继承了'我教授的一堆文件,她让我看看我是否能理解整个项目。它是一堆文件(python, c, java)的混合物,它们将在特定数据集上一个接一个地运行。从我所看到的,代码编写得非常糟糕,README是一个笑话。

第一步涉及使用数据集和另外两个参数运行python脚本。该文件的最后一行是

os.system("./blar " + str(raw_datafile) + " " + str(combos) + " " + str(mine1) + " " + str(mine2))

转换为 -

./blar RareDiseaseDataSet.xlsx 57 1 84

我知道os.system在子shell中执行命令。但是,当执行上述命令时,结果为./blar: No such file or directory。该文件夹有一个名为blar.c的文件。我的c知识非常基础,为了生成可执行文件,我尝试了make blar.cgcc blar.c -o blar,但无济于事。我如何让它运行?

修改 试过这些命令 -

$ make blar.c
make: Nothing to be done for `blar.c'.

$ gcc blar.c -o blar
/tmp/ccblMR3s.o: In function `nonsingles':
blar.c:(.text+0x359): undefined reference to `checknull'
blar.c:(.text+0x3e3): undefined reference to `checknull'
blar.c:(.text+0x759): undefined reference to `next_comb'
/tmp/ccblMR3s.o: In function `main':
blar.c:(.text+0xa20): undefined reference to `readfile'
blar.c:(.text+0xa2d): undefined reference to `checknull'
blar.c:(.text+0xb44): undefined reference to `destroy_file_array'
collect2: ld returned 1 exit status

TL; DR 如何从.c文件创建可执行文件。

P.S。 - 在学校服务器上运行,这是史前的,并使用python 2.4.x

1 个答案:

答案 0 :(得分:1)

您与gcc blar.c -o blar走在了正确的轨道上。大概它失败了,所以你必须找出原因(检查错误信息)并解决它。如果目录中有Makefile,则它会包含构建所有内容的食谱(如果您很幸运的话)。

PS。您的blar程序看起来必须能够阅读Excel电子表格;几乎可以肯定它依赖于其他源文件或库,因此您需要在构建blar的命令中编译和/或链接其他文件。我真的希望你有Makefile