linux下能生成两种.o的文件 一个是我用gcc编译生成的 另一个是makefile生成的,这俩一样么?

作者&投稿:曲命 (若有异议请与网页底部的电邮联系)
linux下 “gcc -o helloworld.o helloworld.c” 生成的.o文件是可执行的,但是一般.o都是obj目标文件?~

你使用的是“-o”,所以生成是就是可执行文件!
如果是“-c”才是生成目标文件!

.o 是可重定位目标程序, 虽然打包了机器语言指令,但它还需要和其它的库(比如你用的printf())做链接,最终生成可执行目标文件,这样才可能被加载到内存中由系统执行.
你的程序里用到printf(),但你自己并没有实现它,实现在系统的库文件中,因此可链接后才能用嘛.

一样的,makefile只是一个脚本,它实际调用的是gcc。

但你这里用“gcc -o helloword.o helloworld.c”调用的是linux(x86的)的标准gcc,而你的makefile脚本中的gcc版本是arm_v5t_le-gcc(是用在arm嵌入式处理器的)。两个处理器不一样,自然编译出的helloworld.o不一样,前者只能在x86电脑上运行,后者只能在arm嵌入式处理机中运行。

你把makefile中的“CC=arm_v5t_le-gcc”改成“CC=gcc”然后再make,之后肯定能运行。


在Linux下 路由表项中有两条到相同目的IP的路由,如何控制IP包走那一条...
很遗憾,不可以这样均衡分配的,linux下包发送原理是先找路由规则,没有配置高级路由的就是main这个规则,也就是route -n或ip route show看到的结果都是main规则下的。然后找路由,路由是有优先级的,同等优先级下,按ip route show显示顺序匹配发送,一旦匹配,后面的就不会 再去看了。所以根据路由不...

RAID1在linux系统下如何实现两块硬盘之间的冗余备份
你有RAID卡,可以使用硬件RAID,开机进RAID卡设置,然后把两个硬盘做成RAID1,这样生成一个逻辑硬盘 操作系统只要有RAID卡驱动,识别到的是逻辑硬盘,在它看来就只是一块硬盘

linux中改变当前目录至 \/test ,在该目录下,建一个空的文件,再建两个...
改变当前目录的命令是:cd 创建文件夹的命令是:mkdir;创建文件的命令是:touch mkdir -p \/test\/xh mkdir -p \/test\/ah

有一台linux服务器有两个网卡 eth0为外网ip eth1 ip为192.168.10.1网段...
echo "1" >> \/proc\/sys\/net\/ipv4\/ip_forward \/\/注2 modprobe ip_nat_ftp iptables -t nat -A POSTROUTING -s 192.168.20.0\/24 -o eth0 -j SNAT --to 192.168.10.10 也可以可以把上面的内容粘贴到文件里,用sh filename来执行,就相当于DOS下的批处理文件。每次重启计算机都需要...

求助: linux下怎么实现两个文件夹的同步(shell脚本)
提供一个思路给你 源文件夹和目标文件夹,通过ls -R -1 生成一个文件列表。然后逐个进行对比 如果不同,则从源文件夹进行复制 其实双向同步是比较麻烦的。因为如果一旦两个文件夹的同一个文件都被修改了,那么就会出现冲突。用脚本写,很麻烦...最好的方法,是搞一个git或者svn一类的版本管理。

linux下多进程或者多线程编程的问题。新手,望指教!
第一个问题,不管是创建进程或者创建线程都不会阻塞,创建完毕马上返回不会等待子进程或者子线程的运行 第二个问题 首先进程和线程是不一样的 多进程时,父进程如果先结束,那么子进程会被init进程接收成为init进程的子进程,接下来子进程接着运行,直到结束,init进程负责取得这些子进程的结束状态并释放...

linux一个文件夹内最多能放多少文件
include\/linux\/ext2_fs.h:#define EXT2_LINK_MAX 32000 include\/linux\/ext3_fs.h:#define EXT3_LINK_MAX 32000 为 什么说31998个呢?这是因为mkdir创建一个目录时,目录下默认就会创建两个子目录的,一个是.目录(代表当前目录),另一个是..目录(代表上级 目录)。这两个子目录是删除...

linux arm交叉工具链建好后在生成的文件夹下面有两个bin文件,一个在根...
gcc-2.95.3太老了, 新的gcc编译器不支持它的源码。你可以:1,建立gcc-3.4以前的本地工具链编译gcc-2.95.3 2,用新的版本的gcc制作交叉编译工具。3,或者你可以修改2.95.3的源码让它可以通过编译。_看你现在用的gcc是什么版本, 建议最低不要低于3.4. 另外, gcc到底用什么版本和你的...

在linux系统下如何配置双网卡?
下面是转贴,不知道能不能帮上你 双网卡指网关问题(总结)我在是Fedora 5 下亲自试验的。大家都知道在linux下面一快网卡时,网关默认在\/etc\/sysconfig\/network下,但是现在如果有两块网卡,而且IP 地址(内,外)也不在同一网段,我们要指定两个网关,这时应该如何指定呢。1、先注释\/etc\/sysconfig\/...

如何在LINUX中给一块网卡绑定两个IP地址?
在安装linux时,如果你有网卡,安装程序将会提示你给出tcp\/ip网络的配置参数,如本机的 ip地址,缺省网关的ip地址,DNS的ip地址等等.根据这些配置参数,安装程序将会自动把网卡(linux系统首先要支持)驱动程序编译到内核中去.但是我们一定要了解加载网卡驱动程序的过程,那么在以后改变网卡,使用多个网卡的时候我们就会很容易...

容城县15755062400: linux下能生成两种.o的文件 一个是我用gcc编译生成的 另一个是makefile生成的,这俩一样么?
桂戴爱普: 一样的,makefile只是一个脚本,它实际调用的是gcc. 但你这里用“gcc -o helloword.o helloworld.c”调用的是linux(x86的)的标准gcc,而你的makefile脚本中的gcc版本是arm_v5t_le-gcc(是用在arm嵌入式处理器的).两个处理器不一样,自然编译出的helloworld.o不一样,前者只能在x86电脑上运行,后者只能在arm嵌入式处理机中运行. 你把makefile中的“CC=arm_v5t_le-gcc”改成“CC=gcc”然后再make,之后肯定能运行.

容城县15755062400: linux下 为什么要生成.o文件 .o文件和.c文件还有生成的可执行文件有啥区别啊? -
桂戴爱普: linux下.c只是简单的文本文件,.o是编译之后的二进制文件,操作方法如下; 1、首先在电脑中打开linux,然后安装gcc g++编译工具. 2、接着创建一个后缀名为.c的文件. 3、然后打开文件,准备编辑代码vim c.c. 4、编写一个最简单的代码,包含头文件和main函数,gcc c.c -o test 编译代码. 5、然后输入./test 运行程序,打印结果如下图所示,就完成了.

容城县15755062400: linux下的.o文件是不是分可执行的.o还有obj类型的.o??望求解!谢谢各位大侠! -
桂戴爱普: 你用makefile生成的.o实际上不是用参数-o带出来的,你用命令生成的helloworld.o是-o参数的值.很明显你后面makefile最后执行的是gcc -o hello hello.o, 两个命令不一样的.

容城县15755062400: linux如何把多个.o编译动态库 -
桂戴爱普: 命令格式如下:gcc 1.o 2.o 3.o -o libxx.so -shared [-fPIC]

容城县15755062400: LInux 如何使用GCC编译器将一个文件夹下的100个.o文件打包成一个静态库文件(.a) -
桂戴爱普: 你已经用gcc编译出目标文件了,用ar工具打包成.a文件就行了啊,示例:如上图,假设我有test1.c,test2.c两个源文件,先使用gcc -c *.c将源文件编译成目标文件,可以看到,生成了test1.o,test2.o两个目标文件,然后,使用ar命令:ar crv libtest.a *.o将该目录下的所有目标文件打包生成了libtest.a文件.这样,你在编译的时候就可以直接使用这个静态库了.

容城县15755062400: linux下的makefile的使用?
桂戴爱普: 首先写出3的依赖项 3:1.o, 2.o 再写出根据依赖项生成3的命令,注意这个命令前面要使用tab键做空格gcc 1.o 2.o -o 3 然后根据这个步骤写出1.o的生成规则 1.o:1.cgcc -c 1.c -o 1.o 最后写出2.o的生成规则 2.o:2.cgcc -c 2.c -o 2.o 详细的makefile...

容城县15755062400: 如何实现linux下的C++多文件编译 -
桂戴爱普: 大部分linux系统都安装了g++(gcc) 可以在linux命令行模式下用g++ 的方法编译 其实有很多跨平台的IDE如codeblocks,还有一些强大的文本编辑器如gvim都可以在linux下输入,编译,调试 linux是许多oier的选择

容城县15755062400: Linux有什么文件类型 -
桂戴爱普: Linux有以下文件类型:1、普通文件(regular file):就是一般存取的文件,由ls -al显示出来的属性中,第一个属性为 [-],例如 [-rwxrwxrwx].另外,依照文件的内容,又大致可以分为: 2、纯文本文件(ASCII):这是Unix系统中最多的一种文...

容城县15755062400: linux系统下,我的c++ ,可以编译,生成.o文件,生成a.out文件,但是不能运行是什么原因? -
桂戴爱普: .o文件是不能运行的

容城县15755062400: Linux怎么能生成一个可执行文件file, 可以 运行命令./file<input>o -
桂戴爱普: 假设C源文件为file.c,且在/tmp目录下,则在命令行下依次执行: 1. cd /tmp 2. gcc -o file file.c 即可生成名称为file的可执行文件. 楼主可以看看《linux程序设计》这本书.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网