
回复在linux下怎么编译C程序:比如C程序保存为helloworldc#
gcc
-o
helloworld
helloworldc
这一步把helloworldc编译成可执行的二进制文件helloworld,这里不一定要和C程序的名字一样,可以是其它名字然后执行该程序:#
/hellogcc
编译器有许多选项,一般来说我们只要知道其中的几个就够了。-o
选项我们已经知道了,表示我们要求输出的可执行文件名。
-c
选项表示我们只要求编译器输出目标代码,而不必要输出可执行文件。-g
选项表示我们要求编译器在编译的时候提供我们以后对程序进行调试的信息。
linux/moduleh是内核模块相关的头文件,如果不在默认位置(/usr/src//include),就需要用-L选项指定。一般情况下,安装内核开发包就可以解决(提示了找不到头文件,说明默认位置是没有moduleh的,“提示”的用处不就是告诉你该怎么解决吗),不同发行版相应的软件包名称不尽相同,一般带有kernel、header或devel等字样(我的发行版上是linux-headers-[version])。
格式 gcc [option] [sourcefilename]
介绍一些常用的选项:最简单的是:gcc helloc
默认的情况下将生成aout的可执行性文件,你只需要在终端上输入/aout就可以看到执行的结果
如果你想指定生成目标文件的名字那么你可以加上 -o选项,命令如下:
gcc -o hello helloc
命令如下:
gcc -c hello helloc
理论上安装支持环境,之后64位的gcc编译成32位程序,就加-m32参数即可。
当然还一个办法是装个32位的gcc。
另外,交叉编译也适用于x86架构。
不过这么编译经常会出现各种问题,所以编译32位的程序,最好还是用32位系统。
不一定重装,用chroot和setarch命令配合即可弄出一个32位的子系统。
一般64位系统最好不要安装32位库的-dev,经常有冲突,强行安装会破坏64位环境,头文件并不像共享库分得那么完美。
我觉得比较好的做法是,重新把某一个文件夹当成rootfs,在里面安装各种32位的库和库-dev,然后给gcc传递参数"--sysroot=路径"就可以让gcc重新选取那个文件夹为rootfs,而不再认为/为rootfs。
int add(int x, int y)
{
return x + y;
}void swap(int x, int y)
{
int t = x; x = y; y = t;
}#include <stdioh>
int add(int x, int y);
void swap(int x, int y);
int main()
{
int a, b, c;
printf("Please input two integer: ");
scanf("%d%d", &a, &b);
c = add(a, b);
printf("add(a, b) = %d\n", c);
swap(&a, &b);
printf("a = %d, b = %d\n", a, b);
return 0;
}
gcc如何调试多线程程序
在gcc编译时加上-lpthread参数,用以连接到库文件。且加上-g参数,用以支持gdb调试。
例如gcc testc -o -g test -lpthread
会得到可执行文件test
而后使用gdb对可执行文件test进行调试
gdb test
b 行号 :设置断点
clear 行号:清楚断点
info 行号:查看断点
run:进入到下一个断点(执行函数体)
stpe:进入到下一个断点(不执行函数体)
infothread:查看被调试的线程
以上就是关于求助:在linux下用gcc编译C程序全部的内容,包括:求助:在linux下用gcc编译C程序、我在linux下写了个程序,怎么用gcc编译、“linux”怎么编译c的源程序的“gcc”编译命令是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)