前天导师要求把以前做的场景漫游以及3DWARP算术计算移植到LINUX下,为此这两天看了看GCC编译程序的知识,现在将一些基于用法记录下来,以免过几天忘记。

g++ -0 name  name.cpp                把CPP或者 C文件编译链接成.exe文件

g++ -c name.cpp   把CPP文件或者 C文件编译成.o文件

   如果需要加载外部库头文件则需要以下命令:

 -I指定头文件的路径,如果 头文件不在当前目录下,会接着搜索你通过-I 设定的目录 ,如果没有设定新目录,则会接着搜索通过环境变量PAPTH及LD——LIBRARY——PATH设置的路径。设定目录的一个例子如下

 g++ opengl.cpp  -I F:\GccCode gl.h  -o opengl 

编译并链接生成当前目录opengl.cpp的.ex文件,而需要的加载的头文件gl.h的目录在F:\GccCode中(以下为在WINDOWs中使用GCC编译的结果)

  如果需要加载外静态库(.lib或者.a文件)则分两种情况讲

1.加载lib 文件

   如果加载lib文件为当前目录或者过环境变量PAPTH及LD——LIBRARY——PATH设置的路径下,则只需直接 引用,例子如下 

   g++ opengl.cpp glew32.lib  -o opengl

   有时可能这个命令不行,这个时候需要使用-l(这里的l为小写,-L为指定引用的外部类库的LIB文件的路径)改变glew32.lib O   -lglew32  不需要指定.lib ,-l已经指定你的外部 加载 类型为lib,命令例子如下:

           g++ opengl.cpp -l  glew32  -o opengl

   这两个命令加载外部lib 文件

   LINUX下对libglu.so(lib文件)的引用 为

   -lglu

           如果lib文件不在当前目录下或者不在环境变量PAPTH及LD——LIBRARY——PATH设置的路径下,则需要通过-L 来指定 新的路径:

           g++ opengl.cpp -L F:\GccCode   -l  glew32  -o opengl

2.加载.a文件

          加载.a文件与,lib文件类似,但是不能使用-l 来指定,必须加.a类型

          g++ opengl.cpp -L F:\GccCode   libglew32.a  -o opengl

         且在加载 库的时候 会有一个问题,这里以glew32.lib为例 ,在将其变换为.a 文件后,会有libglew32.a和libglew32.dll.a两个类型,如果链接的是libglew32.dll.a

那么和加载 glew32.lilb没什么问题,如果 链接libglew32.a则需要在代码 文件中加上一句#define GLEW_STATIC 


Logo

更多推荐