Ubuntu x86-64汇编(2)
开发工具链
汇编编译器: yasm
连接器: ld
载入工具: os自带
Debug工具: ddd
yasm安装
tar zxvf yasm-1.3..tar.gz
cd yasm-1.3./
./configure --prefix=/opt/yasm
make
sudo make install
cd /usr/bin/
sudo ln -s /opt/yasm/bin/yasm yasm
yasm --version
编译命令
yasm -g dwarf2 -f elf64 example.asm -l example.lst
-g dwarf2 在object文件里包含debug信息
-f elf64 使用Linux 64位系统的ELF64格式
-l <filename> 创建filename这个连接文件
连接器
命令格式
ld -g -o example example.o
-g 在输出的可执行文件中包含debug信息
-o 指定可执行文件的文件名, 默认会使用 a.out
方便编译和连接的Shell脚本
可以创建一个脚本以方便编译和连接asm文件
#!/bin/bash
# Simple assemble/link script. if [ -z "$1" ]; then
echo "Usage: ./asm <asmMainFile> (no extension)"
exit
fi
# Verify no extensions were entered
if [ ! -e "$1.asm" ]; then
echo "Error, $1.asm not found."
echo "Note, do not enter file extensions."
exit
fi
# Compile, assemble, and link.
yasm -g dwarf2 -f elf64 $1.asm -l $1.lst
ld -g -o $1 $1.o
执行时, 参数需要删除.asm扩展名
Debug工具 ddd
可以直接通过apt安装
sudo apt-get install ddd
使用时, 需要确认勾选这两个参数 Edit / Preference / General / Suppress X Warning 和 Edit / Preference / Source / Display Source Line Number
可以通过下方的控制台窗口, 或者弹出的控制菜单, 对debug进行控制.
.
Ubuntu x86-64汇编(2)的更多相关文章
- Ubuntu x86 64 settup nginx rtmp server
常常搭建nginxserver,可是好像每次的情况都不同,这次具体记录这个过程: 平台:unbutu 10.04 内核:2.6.32-33-generic 1, 编译环境搭建. sudo apt-ge ...
- < IOS > X-code 5.1 x86 - 64 编译问题
关于xcode 5.1 x86 - 64 编译问题 坐等了N久,终于IOS 7.1 发布了,作为一个果粉,忍不住第一时间升级了.结果用设备测试的时候,出问题了,一直检测不到设备,哈哈,纠结了半 ...
- Ubuntu Linux14 64位下在Android studio下用gradle编译Andrid项目时发生libz.so.1共享库找不到的解决方法。
---恢复内容开始--- 我在Ubuntu14 64为下安装了AS,但在用Gradle编译项目时总是报找不到 libz.so.1的错误. error while loading shared libr ...
- 一段简单c程序的汇编语言学习(ubuntu+x86)
c程序代码: #include <stdio.h> int main(void) { int i=0, j=0; for(i=0; i<8; i++) j=j+1; return 0 ...
- ubuntu 32/64 bit
https://askubuntu.com/questions/454253/how-to-run-32-bit-app-in-ubuntu-64-bit how to run 32-bit app ...
- Ubuntu上64位adv无法创建问题
Ubuntu上安装android开发环境,前面都成功了,但到了最后创建adv的时候却总是失败. 出现了这个问题.最后,上网找了这个教程http://blog.sina.com.cn/s/blog_66 ...
- centos(x86 64位系统)使用boost
1. 安装gcc,g++,make等开发环境 yum groupinstall "Development Tools" 2. 安装boost yum install boost b ...
- ubuntu 12 64 桌面版Oracle11g 安装
1.Creating the Oracle Inventory Group sudo groupadd oinstall sudo groupadd dba sudo groupadd oper su ...
- Openfiler能把标准x86/64架构的系统变成一个强大的NAS、SAN存储和IP存储网关
http://www.linuxprob.com/vmware-openfiler.html
- ubuntu 16 64位编译安装php
./configure \ --prefix=/usr/local/php7 \ --exec-prefix=/usr/local/php7 \ --with-config-file-path=/us ...
随机推荐
- Xilinx FFT IP v9.0 使用
该ip用于实现N=2**m(m=3~16)点FFT的变换, 实现的数学类型包含: A) 定点全精度 B) 定点缩减位宽 C) 块浮点 每一级蝶型运算后舍入或者取整.对于N ...
- 基于ZigBee和STM32的智能家居控制系统的设计与实现(三)
基于ZigBee和STM32的智能家居控制系统的设计与实现(三) 自从前两篇博客介绍了智能家居系统的基本实现机理后,收到了好多朋友的来信,和我讨论了好多的这方面的知识,在此很高兴,虽然自己做的这个所谓 ...
- solr4.7配置(ik-analyzer)
环境: windows server 2003 sp2 x86 tomcat8.0 solr-4.7.2 IK Analyzer 2012FF_hf1 ————————————华丽的分割线—————— ...
- PyTorch保存模型与加载模型+Finetune预训练模型使用
Pytorch 保存模型与加载模型 PyTorch之保存加载模型 参数初始化参 数的初始化其实就是对参数赋值.而我们需要学习的参数其实都是Variable,它其实是对Tensor的封装,同时提供了da ...
- 【Spark】SparkStreaming-提交到集群运行
SparkStreaming-提交到集群运行 spark streaming 提交_百度搜索 SparkStreaming示例在集群中运行 - CSDN博客
- [转]学习块格式化上下文(BlockFormattingContext)
原文:https://www.cnblogs.com/elcarim5efil/p/4745796.html 格式化上下文 格式化上下文( formatting contexts )├── 块级格 ...
- Kafka:ZK+Kafka+Spark Streaming集群环境搭建(十四)定义一个avro schema使用comsumer发送avro字符流,producer接受avro字符流并解析
参考<在Kafka中使用Avro编码消息:Consumer篇>.<在Kafka中使用Avro编码消息:Producter篇> 在了解如何avro发送到kafka,再从kafka ...
- ASP入门(十一)-Session小案例
一般来说,在实际开发中,对于 Session 对象使用最多的就是用户登录部分了,这个案例将简单模拟一个用户登录表单.用户是否登录的判断以及用户退出的一系列功能,它一共分了以下几个页面. Login.a ...
- IIS发布网站遇到 编译器错误消息: CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary 编
编译错误: 说明:在编译向该请求提供服务所需资源的过程中出现错误.请检查下列特定错误详细信息并适当地修改源代码. 编译器错误消息:CS0016: 未能写入输出文件“c:\Windows\Microso ...
- C#.NET常见问题(FAQ)-如何使用变量访问控件属性
不管哪种类型的控件,可以用下面这种强制转换和Controls.Find的方法来读写控件的属性 //我在界面上做了三个picturebox控件 PictureBox p; //注意索引必须从1开始,并且 ...