2012-09-13 27 views
1

最近我有在makefile我有一个SQLite程序我正在使用这个命令:原因不得不文件编译成不同的扩展类型

gcc -g -c sqlite3.c -o sqlite3.o 
g++ -g -c main.cpp -o main.o 
g++ sqlite3.o main.o -o sqliteex 

我不得不直接编译sqlite3的。 c文件到我的程序中,以便使用sqlite3.h接口(包含在main.cpp文件中,包含SQL/sqlite3.h)。但为什么我需要使用gcc来执行此操作并创建sqlite3.o,然后将这两个文件作为.o文件编译到我的可执行文件中?

编辑:我的猜测是,.o文件是由GCC和G ++编译,如果是这样的话,它是一个很好的做法,只是一直编东西.o文件?从维基百科

+1

可能是因为它有两个C和C++。 – Mysticial

回答

3

但是为什么我需要使用gcc要做到这一点,创造sqlite3.o,那么这两个文件为.o文件编译成可执行的我?

您没有需要来做到这一点。究其原因,你这样做是为了指定sqlite.c是Ç代码,而不是C++代码。你可以这样做,而不是:

g++ main.cpp -x c sqlite3.c -o sqliteex 

此外,它是可能的(但不是完全肯定)的sqlite的代码可以编译为C++,就像这样:

g++ main.cpp sqlite3.c -o sqliteex 
0

报价:

单编译单元是计算机编程的C/C++语言,从而减少编译时间和帮助编译器执行编译器本身缺乏对整体的支持,即使程序优化技术程序优化或预编译头文件。

http://en.wikipedia.org/wiki/Single_Compilation_Unit

发展主要是编辑 - >编译直至成功周期。当你有单独编译的文件时,你可以只重新编译被修改的文件,这会使重建速度更快。最后一行不是编译,而是编译目标文件链接到目标可执行文件。

而且作为Mysticial指出,你有和C的混合物,C++

相关问题