[原创]linux简单之美(二)
原文链接:linux简单之美(二)
我们在前一章中看到了如何仅仅用syscall做一些简单的事,现在我们看能不能直接调用C标准库中的函数快速做一些"复杂"的事:
1 section .data 2 ft db "now is %d",10 3 4 section .text 5 extern puts 6 extern exit 7 extern sleep 8 extern printf 9 global main 10 11 main: 12 mov edi,11 13 again: 14 dec edi 15 push edi 16 push ft 17 call printf 18 19 push 1 20 call sleep 21 22 cmp edi,0 23 jnz again 24 25 push msg 26 call puts 27 28 push 0 29 call exit 30 31 msg: 32 db "happy xxx day!",0
以上代码功能很简单,从10倒数到0,然后打印一行,最后结束.与之前代码不同的是其中调用了C标准库中的函数.编译和以前一样:
nasm -e elf main.asm
我们看看怎么连接:
gcc -m32 -o main main.o
好鸟!运行正常.值得注意的是:我的OS是ubuntu64,而asm代码中是32位的,如果开始用 ld -m elf_i386 -lc -o main main.o的方式,首先会提示找不到c库,这时可以进入/usr/lib,然后使用:
sudo ln -sv /lib/i386-linux-gun/libc.so.6 libc.so
创建软连接解决.但在运行时提示无法找到可执行文件!该文件明明在的!遂用gcc来连接,但要将_start改为main,还要装载32库:
sudo apt-get install ia32-libs
还会提示找不到h文件,这时再装载库:
sudo apt-get install g++-multilib
还有2族库,如有必要也可加载:
sudo apt-get install libc6:i386 libgcc1:i386 gcc-4.6-base:i386
libstdc++5:i386 libstdc++6:i386
sudo apt-get install libc6-i386
最后要说的是,一些C代码在用std=c99编译时会发现提示无法获取结构大小,这时改成如下即可:
gcc -D_GNU_SOURCE -std=c99 main.c
转载于:https://www.cnblogs.com/hopy/p/3830293.html
[原创]linux简单之美(二)相关推荐
- 交叉编译及linux简单程序设计,嵌入式实验6交叉编译及Linux简单程序设计实验
实验六交叉编译及Linux简单程序设计实验的实验报告 一实验目的 1.了解和掌握交叉编译模式和方法: 2.熟悉和掌握Linux简单程序设计. 二实验环境 预装Fedora10_A8_Linux的pc机 ...
- Linux编译和下载嵌入式实验,嵌入式实验6交叉编译及Linux简单程序设计实验
<嵌入式实验6交叉编译及Linux简单程序设计实验>由会员分享,可在线阅读,更多相关<嵌入式实验6交叉编译及Linux简单程序设计实验(7页珍藏版)>请在人人文库网上搜索. 1 ...
- linux词语大全,简单词语大全二字学习软件-简单词语大全四字下载v1.5.3-Linux公社...
简单词语大全二字学习软件是一款可以让用户快速背单词的软件,这款软件为用户提供了英语内容搭配影音的例句,让用户可以轻松学习英语.其中,用户可以在简单词语大全二字学习软件上对多人进行挑战,看自己的英语水平 ...
- Linux简单安装Mysql+Apach+PHP+phpMyAdmin
Linux简单安装Mysql+Apach+PHP+phpMyAdmin 2008年06月02日 星期一 上午 01:00 从网上看到许多Apache+Mysql+PHP的安装文档,但有的总是会有写错误 ...
- 体会Linux与生俱来的美 ---摘自csdn
走进Linux 操作系统 摘要:本期涉猎了操作系统的来龙去脉后与大家携手步入Linux世界.我们力图展示给大家一幅Linux系统的全景图,并为了加深对linux系统的全面认知,亲手搭建了一个能运行在内 ...
- 体会Linux与生俱来的美 初级篇 走进Linux 操作系统
http://www.csdn.net/subject/linux/approach.mht 摘要:本期涉猎了操作系统的来龙去脉后与大家携手步入Linux世界.我们力图展示给大家一幅Linux系统的全 ...
- 深入理解 Linux Cgroup 系列(二):玩转 CPU
原文链接:深入理解 Linux Cgroup 系列(二):玩转 CPU 上篇文章主要介绍了 cgroup 的一些基本概念,包括其在 CentOS 系统中的默认设置和控制工具,并以 CPU 为例阐述 c ...
- linux查看文件夹个球,[原创]linux下面的打小球游戏
[原创]linux下面的打小球游戏 (2012-04-10 04:51:44) 标签: linux 游戏 杂谈 [原创]linux下面的打小球游戏linux下面的C编程,我还是新手,请大家别笑话. # ...
- Linux磁盘分区(二):删除
***********************************************声明************************************************ 原创 ...
最新文章
- NFS安装系统及PS1设定
- linux怎么装谷歌浏览器,如何在linux CentOS 上安装chrome 谷歌浏览器?
- Switch命令汇总
- 推荐一些不错的开源免费易上手的web前端框架
- HTML与CSS基础之子和后代元素选择器(八)
- Zen Coding 系列教程一:入门
- c语言指针的概念和作用,指针:C语言的重要概念和特色.pdf
- Tomcat8.0之后GET请求不需要再设置中文乱码问题
- Java第十九天(字节流和字符流转换、打印流、Properties类)
- 企业微信API学习笔记
- 【OVRP问题】基于鲸鱼优化算法求解开放式车辆路径问题附matlab代码
- 计算机的物理地址怎么写,电脑物理地址怎么查
- Docker 配置国内镜像加速器
- oppo8.0系统最简单激活xposed框架的经验
- Python之解决tkinter.PhotoImage不显示图片的问题 Python3
- HTML制作一个介绍自己家乡的网站——贵阳,排版整洁,内容丰富,主题鲜明
- Android Q访问公共外部存储受限
- 昨天,我的大学学习[3]--转载自:www.cstc.net.cn
- Elasticsearch索引新增字段
- 微软表示今年员工不要参与愚人节活动!怕玩笑过大得不偿失