#include <stdio.h>
void main(){
printf("hello world. ");
}
gcc hello.c -o hello -std=c99
编译通过。
但通过如下编译则失败——
g++ hello.c -o hello -std=c++11
失败信息为:
hello.c:3:11: error: ‘::main’ must return ‘int’
void main()
^
这是因为在c+11中,main必须为int类型,但却可以不必有返回值;修改代码为如下即可——
#include <stdio.h>
int main(){
printf("hello world. ");
/*return 0; 可以不需要这行*/
}
附gcc/g++编译命令集合:
//编译生成可执行文件
g++ -o hello hello.cpp
//运行
./hello
GCC编译命令
gcc -v 查看版本
查找g++的命令帮助 键入 info g++,会显示出gcc的帮助信息,g++大部分参数和gcc命令相同
选项 解释
-ansi 只支持 ANSI 标准的 C 语法。这一选项将禁止 GNU C 的某些特色,
例如 asm 或 typeof 关键词。
-c -o只编译并生成目标文件。
-DMACRO 以字符串“1”定义 MACRO 宏。
-DMACRO=DEFN 以字符串“DEFN”定义 MACRO 宏。
-E 只运行 C 预编译器。
-g 生成调试信息。GNU 调试器可利用该信息。
-IDIRECTORY 指定额外的头文件搜索路径DIRECTORY。
-LDIRECTORY 指定额外的函数库搜索路径DIRECTORY。
-lLIBRARY 连接时搜索指定的函数库LIBRARY。
-m486 针对 486 进行代码优化。
-o FILE 生成指定的输出文件。用在生成可执行文件时。
-O0 不进行优化处理。
-O 或 -O1 优化生成代码。
-O2 进一步优化。
-O3 比 -O2 更进一步优化,包括 inline 函数。
-shared 生成共享目标文件。通常用在建立共享库时。
-static 禁止使用共享连接。
-UMACRO 取消对 MACRO 宏的定义。
-w 不生成任何警告信息。
-Wall 生成所有警告信息。
g++ -o 目标文件名 源文件名
ldd programm 查看programm程序所依赖的共享库(.so)文件
ar crv mm.a x.o y.o 将x.o和y.o合并到一个静态库mm.a文件中
ranlib mm.a 生成静态库的内容表 (不是必须)
emacs基本命令
ctrl+x+f 打开文件
ctrl+x+d 打开目录,查看该目录的子目录
ctrl+x+s 保存当前buffer里的文件
ctrl+s 查找当前buffer里的文本
rename-buffer 修改当前缓冲区的名字
ctrl+shift+ - 回退
ctrl+alt+ 对选中的代码进行格式化
ctrl+x 松开后 按o 在不同的缓冲区移动焦点
alt+x选中命令缓冲区
ctrl+g取消当前命令
alt+w 复制被选中的代码
ctrl+y 粘帖代码
ctrl+w 剪切代码
ctrl+x 松掉后按backspace 设置断点
ctrl+x+k 关闭当前缓冲区
GDB调试命令
查看gdb帮助信息 gdb –help
注意g++编译时,使用-g命令
gdb 已编译的程序文件名
list 显示源代码
break命令设置断点,可以后面加上函数名称
delete breakpoints 删除所有断点
run 运行程序
step <count> 单步跟踪(自动进入函数)
next <count> 单步跟踪(不自动进入函数)
continue 继续运行
print 变量名查看某变量的值,调试过程中改变某变量的值
info breakpoints 查看程序中断点设置的信息
quit 退出
info thread 列出多个线程号。 thread 查看当前线程号 thread 线程号 选择进入哪个线程进行调试。
Unicode和MultiBytes 字符串的转换
#include <wchar.h>
size_t wcsrtombs (char *dest, const wchar_t **src, size_t len, mbstate_t *ps);
#include <stdlib.h>
size_t mbstowcs(wchar_t *pwcs, const char *s, size_t n);
环境变量
查看环境变量
env
env也可以用来设置环境变量的值,具体看env --help
set 也可是设置环境变量
如果环境变量在一个terminal里设置,就只对这个terminal有效
如果想全局的设置,需要修改
/etc/profile文件