使用 MinGW32 GCC 编译。只告诉链接库一次?
Posted
技术标签:
【中文标题】使用 MinGW32 GCC 编译。只告诉链接库一次?【英文标题】:Compiling with MinGW32 GCC. Only tell link libraries once? 【发布时间】:2012-07-25 09:00:48 【问题描述】:我正在使用 mingw32 gcc 通过命令行编译程序。随着源文件的增加,我遇到了一些问题。首先,考虑以下脚本:
gcc -Wall -I"MyDir" -I"MyDir2" -L"MyLibDir" -L"MyLibDir2" -l lib1 -l lib2 -l lib3 -c file.c
gcc -Wall -I"MyDir" -I"MyDir2" -L"MyLibDir" -L"MyLibDir2" -l lib1 -l lib2 -l lib3 -c file2.c
gcc -Wall -I"MyDir" -I"MyDir2" -L"MyLibDir" -L"MyLibDir2" -l lib1 -l lib2 -l lib3 -c file3.c
gcc -o myprog.exe file1.o file2.o file3.o
现在,我不能只告诉gcc
编译器目录-I
、链接器目录-L
和链接库-l
一次,然后用相同的选项编译第二个和第三个源文件,而不必重新输入?类似的东西
gcc -define-options -Wall -I"MyDir" -I"MyDir2" -L"MyLibDir" -L"MyLibDir2" -l lib1 -l lib2 -l lib3
gcc -Wall -c file1.c
gcc -Wall -c file2.c
gcc -Wall -c file3.c
gcc -o myprog.exe file1.o file2.o file3.o
【问题讨论】:
【参考方案1】:据我所知,不,你不能。但这就是发明 make 和 Makefile 的原因 :) 我认为 this tutorial 足以让您开始为您的小型项目编写一个体面的 Makefile。
PS:快速而肮脏的方法是编写一个简单的 bash 脚本,将包含目录保存在一个变量中,但在我看来 Makefile 是一个更好的选择,因为您不想重新发明***。
PS2:出于好奇,我发现确实有办法做到这一点。您只需要定义一些环境变量。详情见这里:How to add a default include path for gcc in linux?
【讨论】:
链接教程的要点:调用目标all
没有什么特别的。 make
认为在 .DEFAULT_GOAL
为空时读取的第一个目标是默认值,除非对特殊变量 .DEFAULT_GOAL
的赋值改变了这一点。见gnu.org/software/make/manual/html_node/Special-Variables.html。以上是关于使用 MinGW32 GCC 编译。只告诉链接库一次?的主要内容,如果未能解决你的问题,请参考以下文章
用mingw32 gcc 一编译就出一大堆错误,应该怎么解决