zoukankan      html  css  js  c++  java
  • [C]gcc编译器的一些常用语法

    简单的GCC语法:

    如果你只有一个文件(或者只有几个文件),那么就可以不写Makefile文件(当然有Makefile更加方便),用gcc直接编译就行了。在这里我们只介绍几个我经常用的几个参数,第一是 “-o”,它后面的参数表示要输出的目标文件,再一个是 “-c”,表示仅编译(Compile),不连接(Make),如果没有”-c”参数,那么就表示连接,如下面的几个命令:

    gcc –c test.c,表示只编译test.c文件,成功时输出目标文件test.o

    gcc –c test.c –o test.o ,与上一条命令完全相同,加入-o选项的意义在于你可以指定输出二进制文件的名字

    gcc –o test test.o,将编译过的test.o连接成可执行的二进制文件test

    gcc test.o -o test,与上一条命令相同

    gcc –o test test.c,将test.c编译并连接成可执行的二进制文件test

    gcc test.c –o test,与上一条命令相同

    gcc –c test1.c,只编译test1.c,成功时输出目标文件test1.o

    gcc –c test2.c,只编译test2.c,成功时输出目标文件test2.o

    gcc –c test1.c test2.c,将test1.v和test2.v编译为test1.o和test2.o

    gcc –o test test1.o test2.o,将test1.o和test2.o连接为可执行的二进制文件test

    注:如果你想编译cpp文件,那么请用g++,否则会有类似如下莫名其妙的错误:

    cc3r3i2U.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0’......

    还有一个参数是”-l”参数,与之紧紧相连的是表示连接时所要的链接库,比如多线程,如果你使用了pthread_create函数,那么你就应该在编译语句的最后加上”-lpthread”,”-l”表示连接,”pthread”表示要连接的库,注意他们在这里要连在一起写,还有比如你使用了光标库curses,那么呢就应该在后面加上”-lcurses”,比如下面的写法:

    gcc –o test test1.o test2.o –lpthread –lcurses

    当然gcc的参数我感觉有几百个,不过我们平时在x86机器上用的就这么些,况且这里也不是GCC教程,所以,就此打住。

     

    关于math.h头文件的语

    如果包含math.h头文件,编译时需要加上-lm参数,例如 gcc test1.c -lm -o test

    关于pthread扩展

    如果需要使用POSIX.1-2001中的pthread扩展,编译时需要加上-lpthread参数,例如 gcc test1.c -lpthread -o test

    关于C++

    如果是C++,编译时则需要加上-lstdc++,例如 gcc test1.cpp -lstdc++ -o test

     

    关于文件后缀

    如果是头文件,命名为.h,如果是编译单元,命名为.c。千万不要把编译单元命名为.h,gcc会视它为一个头文件去编译,当你想把它跟其他编译单元链接起来的时候,就会报错

    xxx.xxx: file not recognized: File format not recognized

     

     附录

    gcc编译选项

  • 相关阅读:
    随笔列表--目录还没有时间来得及更改......
    [Redis] 万字长文带你总结Redis,助你面试升级打怪
    [Java] 多线程基础详细总结,附加详细实例
    这次,我是如何监控服务器CPU和内存的
    [Java][Web] Servlet中转发和重定向比较
    [Maven] Project build error: 'packaging' with value 'jar' is invalid. Aggregator projects require 'pom' as packaging.
    [JAVA][Liferay] Configure sharding in multiple sites
    [JAVA][Liferay] Duplicate key value violates unique constraint for resourcepermissionid in Liferay
    [Java][Liferay] 模拟用户
    [Java][Liferay] 如何从Javascript的function中获取language property的值
  • 原文地址:https://www.cnblogs.com/yiyide266/p/9682120.html
Copyright © 2011-2022 走看看