导航:首页 > 源码编译 > gas编译bin文件

gas编译bin文件

发布时间:2023-01-08 00:59:09

㈠ ios 怎么配置编译ffmpeg

一、系统环境

MAC OS X Mountain Lion 10.8.3、 XCode 5.1

二、编译FFMpeg

1、下载ffmpeg2.2.5版本代码,并解压

2、下载并解压gas-preprocessor.pl (附件中有,zip格式,因网易博客不能上传zip后缀的文件,故加了个.rar)

在终端中使用cp命令将它复制到 /usr/sbin/目录,并赋予可执行权限。

sudo cp -f gas-preprocessor/gas-preprocessor.pl /usr/sbin/chmod +x /usr/sbin/gas-preprocessor.pl

3、在ffmpeg目录下创建一个config.sh脚本

#!/bin/bash
SDKVERSION="7.1"

ARCHS="armv7 armv7s i386"

DEVELOPER=`xcode-select -print-path`

cd "`dirname "$0"`"
REPOROOT=$(pwd)

# where we will store intermediary builds
INTERDIR="${REPOROOT}/built"
mkdir -p $INTERDIR

########################################
# Exit the script if an error happens

for ARCH in ${ARCHS}
do
if [ "${ARCH}" == "i386" ];
then
PLATFORM="iPhoneSimulator"
EXTRA_CONFIG="--arch=i386 --disable-asm --enable-cross-compile --target-os=darwin --cpu=i386"
EXTRA_CFLAGS="-arch i386"
EXTRA_LDFLAGS="-I${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer/SDKs/${PLATFORM}${SDKVERSION}.sdk/usr/lib"
else
PLATFORM="iPhoneOS"
EXTRA_CONFIG="--arch=arm --target-os=darwin --enable-cross-compile --cpu=cortex-a9 --disable-armv5te"
EXTRA_CFLAGS="-w -arch ${ARCH}"
fi

mkdir -p "${INTERDIR}/${ARCH}"

./configure --prefix="${INTERDIR}/${ARCH}"
--disable-neon
--disable-armv6
--disable-armv6t2
--disable-ffmpeg
--disable-ffplay
--disable-ffprobe
--disable-ffserver
--disable-iconv
--disable-bzlib
--enable-avresample
--sysroot="${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer/SDKs/${PLATFORM}${SDKVERSION}.sdk"
--cc="${DEVELOPER}/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang"
--as='/usr/local/bin/gas-preprocessor.pl'
--extra-cflags="${EXTRA_CFLAGS} -miphoneos-version-min=${SDKVERSION}"
--extra-ldflags="-arch ${ARCH} ${EXTRA_LDFLAGS} -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/${PLATFORM}.platform/Developer/SDKs/${PLATFORM}${SDKVERSION}.sdk -miphoneos-version-min=${SDKVERSION}" ${EXTRA_CONFIG}
--enable-pic
--extra-cxxflags="$CPPFLAGS -isysroot ${DEVELOPER}/Platforms/${PLATFORM}.platform/Developer/SDKs/${PLATFORM}${SDKVERSION}.sdk"

make && make install && make clean

done

mkdir -p "${INTERDIR}/universal/lib"

cd "${INTERDIR}/armv7/lib"
for file in *.a
do

cd ${INTERDIR}
xcrun -sdk iphoneos lipo -output universal/lib/$file -create -arch armv7 armv7/lib/$file -arch armv7s armv7s/lib/$file -arch i386 i386/lib/$file
echo "Universal $file created."

done
cp -r ${INTERDIR}/armv7/include ${INTERDIR}/universal/

echo "Done."

SDKVERSION 是XCode的版本,通过`xcode-select -print-path`来获取XCode的安装路径,ARCHS是编译的三种模式,接下来在终端中cd到ffmpeg目录,./config.sh执行就可以编译了。等到编译完成后,在ffmpeg目录下会多出一个built目录,里面分别是armv7 armv7s i386及三个合并的universal版本了。

linux下面进行8086汇编

linux的内核中有很多汇编语言,但gcc是linux的唯一指定编译器,说明汇编的编译同样使用gcc,只是命令参数不一样

我美编写过8086汇编,但我编译过内核,确实不需要其他编译器

回答补充:

原来是编辑器的问题,我还以为你找的全套流程呢。

我连vim都没碰过,平时都是gedit,只有自动缩进一项功能,还很弱智,帮不上你了

这儿一点参考资料,贴出来,虽然有可能用不上

http://www.ibm.com/developerworks/cn/linux/l-assembly/

㈢ 如何让FFmpeg在iOS上完美编译

编译mac上基于ffmepg的软件需要先下载两个程序:iFrameExractor和ffmpeg编译步骤:1、在终端下:cd/iFrameExtractor/ffmpeg建议开始就执行sudo-s(获取权限命令)2、在终端下输入./configure--prefix=/iFrameExtractor/ffmpeg--libdir=iFrameExtractor/ffmpeg/lib--enable-gpl--enable-static--disable-shared--enable-swscale--enable-zlib--enable-bzlib--disable-ffmpeg--disable-ffplay--disable-ffserver--enable-pthreads3、执行make这里会有一堆的编译情况。注:最好先升级CommandLineTools,避免编译错误4、执行makeinstall。(执行完后到iFrameExtractor/ffmpeg/lib文件上去看看)出现个.a文件5、用xcode打开iFrameExractor工程,确认HeaderSearchPaths里有:"$(SRCROOT)/ffmpeg"路径。$(SRCROOT)表示工程路径。同时可以看到iFrameExractor工程下ffmpeg文件下的.a文件都不是红色的了。6、真机上编译(模拟器上i386,真机上是arm的,真机还分arm6和arm7以下是针对arm7的/configure--disable-doc--disable-ffmpeg--disable-ffplay--disable-ffserver--enable-cross-compile--arch=arm--target-os=darwin--cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc--as='gas-preprocessor/gas-preprocessor.pl/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc'--sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk--cpu=cortex-a8--extra-cflags='-archarmv7'--extra-ldflags='-archarmv7-isysroot/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk'--enable-pic7、执行make和makeinstall就有上面的几个.a文件,至此编译结束。

㈣ 如何构建MIPS交叉编译工具链

第一步 创建目录以及环境变量
在当前用户目录下创建target-project文件夹,在该文件夹下创建mips-mole文件夹,在mips-mole文件夹下创建三个文件夹:build-tools,kernel,tools,最后,在build-tools文件夹下创建build-gcc,build-boot-gcc,build-glibc,build-binutils文件夹。命令如下:

$ cd ~
$ mkdir -p ./target-project/mips-mole/{kernel/,tools/,build-tools/{build-gcc,build-boot-gcc,build-glibc,build-binutils}}
$ tree ./target-project/mips-mole/

使用脚本构建环境变量
#! /bin/bash

注意修改/home/用户名,修改正确后,使用source使脚本生效

$ cd target-project
$ chmod +x mips.sh
$ source mips.sh
可以使用echo査看相关变量名以观察环境变量是否生效。
最后把linux-2.6.38.tar.bz2下载放置在kernel文件夹下,binutils-2.22.tar.gz,gcc-4.6.2.tar.gz,glibc-2.14.tar.gz,glibc-ports-2.14.tar.gz,gmp-5.0.4.tar.gz,mpc-0.9.tar.gz,mpfr-3.0.1.tar.gz下载放置在build-tools文件夹下。

第二步 安装基于MIPS的linux头文件

$ cd $PRJROOT/kernel
$ tar -xjvf linux-2.6.38.tar.bz2
$ cd linux-2.6.38
在指定路径下创建include文件夹,用来存放相关头文件。

$ mkdir -p $TARGET_PREFIX/include
保证linux源码是干净的。

$ make mrproper
生成需要的头文件。
$ make ARCH=mips headers_check

$ make ARCH=mips INSTALL_HDR_PATH=dest headers_install
将dest文件夹下的所有文件复制到指定的include文件夹内。

$ cp -rv dest/include/* $TARGET_PREFIX/include
最后删除dest文件夹
$ rm -rf dest
$ ls -l $TARGET_PREFIX/include

第三步 安装binutils-2.22

$ cd $PRJROOT/build-tools
$ tar -xzvf binutils-2.22.tar.gz
$ cd build-binutils
$ ../binutils-2.22/configure --target=$TARGET --prefix=$PREFIX
$ make
$ make install

再安装automake。

$ tar -xzvf automake-1.11.1.tar.gz
$ cd automake-1.11.1
$ ./configure
$ make
$ sudo make install
下面开始修改相关文件,主要是去掉-Werror。
$ cd $PRJROOT/build-tools/binutils-2.22/gas
$ ge dit configure
将下面内容
# Enable -Werror by default when using gcc
if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
ERROR_ON_WARNING=yes
fi
修改为
# Enable -Werror by default when using gcc
if test "${GCC}" = yes -a -z "${ERROR_ON_WARNING}" ; then
ERROR_ON_WARNING=no
fi
但是,需要重新configure生成Makefile.in。

$ ./configure (在binutils/gas路径下的configure)
$ make distclean (切记)
然后重新执行第三步,这次编译可过。

第四步 安装gcc引导器

$ cd $PRJROOT/build-tools
$ tar -xzvf gcc-4.6.2.tar.gz
$ tar -xjvf gmp-5.0.4.tar.bz2
$ mv gmp-5.0.4 ./gcc-4.6.2/gmp
$ tar -xzvf mpc-0.9.tar.gz
$ mv mpc-0.9 ./gcc-4.6.2/mpc
$ tar -xzvf mpfr-3.0.1.tar.gz
$ mv mpfr-3.0.1 ./gcc-4.6.2/mpfr
$ cd build-boot-gcc
$ ../gcc-4.6.2/configure --target=$TARGET --prefix=$PREFIX --disable-shared <br>--without-headers --with-newlib --enable-languages=c --disable-decimal-float <br>--disable-libgomp --disable-libmudflap --disable-libssp --disable-threads --disable-multilib
编译并安装gcc引导器、libgcc库。

$ make all-gcc
$ make all-target-libgcc
$ make install-gcc
$ make install-target-libgcc

第五步 编译glibc

$ cd $PRJROOT/build-tools
$ tar xzvf glibc-2.14.tar.gz
$ cd glibc-2.14
删除Makefonfig文件中的内容-lgcc_eh。

$ cp -v Makeconfig{,.b肠花斑拘职饺办邪暴矛k}
$ sed -e 's/-lgcc_eh//g' Makeconfig.bk > Makeconfig
$ cd ..
$ tar -xjvf glibc-ports-2.14.tar.bz2
$ mv glibc-ports-2.14 ./glibc-2.14/ports
$ cd build-glibc
$ CC=mipsel-linux--gcc ../glibc-2.14/configure --host=$TARGET --prefix="/usr" <br>--enable-add-ons --with-headers=$TARGET_PREFIX/include libc_cv_forced_unwind=yes <br>libc_cv_c_cleanup=yes
注意:此时如何设置了LD_LIBRARY_PATH环境变量会configure error,需要删除该变量重新configure。

$ make
$ make install_root=$TARGET_PREFIX prefix=”” install
第六步 完全安装gcc
首先,也是很重要的是去掉libc等库文件的绝对路径。

$ cd $TARGET_PREFIX/lib
备份一下。

$ cp libc.so libc.so.bk
$ gedit libc.so
将原内容
GROUP ( /lib/libc.so.6 /lib/libc_nonshared.a AS_NEEDED ( /lib/ld.so.1 ) )
修改为
GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld.so.1 ) )

$ cp libpthread.so libpthread.so.bk
$ gedit libpthread.so
将原内容
GROUP ( /lib/libpthread.so.0 /lib/libpthread_nonshared.a )
修改为
GROUP ( libpthread.so.0 libpthread_nonshared.a )
然后可以完全编译gcc。

㈤ 汇编语言编程工具

windows 可以用轻松汇编开发

DOS下常用的工具MASM和TASM

Linux下的汇编工具: Linux下的汇编工具可谓百家争鸣,不像DOS下都要给MASM和TASM给控制了。但是Linux下每一种汇编工具都有很大的区别,要想全部掌握几乎是不可能的,下面我介绍几种常用的汇编工具,重点介绍NASM及其使用和语法。 1、GCC GCC其实是GNU的C语言产品,但它支持Inline Assemble,在GCC中inline assemble使用就像宏一样,但它比宏能更清楚更准确的表达机器的工作状态。 C是汇编编程的一个高度概括,它可以减少许多汇编中的麻烦,特别是在GCC这个C编译器中,assemble似乎起不了多大的作用。 2、GAS GAS是Linux各版本中基本的汇编工具,但它采用的是AT&T的语法标准与Intel的语法标准有很大的不同,对于DOS编程的我们来说,学习起来是非常困难的。当然如果要精通Linux下的汇编编程,学习GAS也是非常必要的,具体的语法标准可以参看Using GNU Assembler。 3、GASP GASP是GAS的扩展,它增强了GAS对宏的支持。 4、NASM NASM是linux中语法与DOS最为相像的一种汇编工具。虽说如此,它与MASM也是有着很大区别的。 l NASM的使用格式如下: Nasm �Cf -o 例如: Nasm -f elf hello.asm 将把hello.asm汇编成ELF object文件,而 Nasm -f bin hello.asm -o hello.com 会把hello.asm汇编成二进制可执行文件hello.com Nasm �Ch 将会列出NASM命令行的完整说明。 NASM不会有任何输出,除非有错误发生。 -f 在Linux下主要有aout和ELF两种,如果你不确定你的Linux系统应该用AOUT还是ELF,可以在NASM目录中输入 File nasm ,如果输出nasm: ELF 32-bit LSB executable i386 (386 and up) Version 1表示是ELF,如果输出nasm: Linux/i386 demand-paged executable (QMAGIC)表示是aout。

NASM与MASM的主要不同: 首先与linux系统一样,nasm是区分大小写的,Hello与hello将是不同的标识符,如果要汇编到DOS或OS/2,需要加入UPPERCASE参数。 其次,nasm中内存操作数都是以[ ]表示。 在MASM中 foo equ 1 bar dw 2 mov ax,foo mov ax,bar 将被汇编成完全不同的指令,虽然它们在MASM中的表达方式完全一样。而NASM完全避免了这种混乱,它使用的是这样的规则:所有对内存的操作都必须通过[ ]来实现。例如上例中对bar的操作就要写成如下形式 mov ax,[bar]。由此可见,nasm中对offset的使用也是没有必要的(nasm中无offset)。Nasm对[ ]的使用与masm也有所不同,所有的表达式都必须写在[ ]中,下面举两个例子来说明: Masm Nasm Mov ax,table[di] Mov ax,[table+di] Mov ax,es:[di] Mov ax,[es:di] Mov ax,[di]+1 Mov ax,[di+1] Nasm 中不存储变量类型,原因很简单masm中通过[ ]寻址方式的变量也必须要指定类型。Nasm中不支持LODS, MOVS, STOS, SCAS, CMPS, INS, OUTS,只支持lodsb、lodsw等已经指定类型的操作。Nasm中不再有assume操作,段地址完全取决于存入段寄存器的值。 关于NASM的使用方法及语法还可以参阅NASM使用手册。

至于下载,你就自己找就是了。很容易就找到了,我给你几个啊

轻松汇编:http://www.skycn.com/soft/20135.html#download
masm:http://download.pchome.net/development/linetools/download-10660.html
nasm:http://download.chinaunix.net/download/0008000/7201.shtml
gas:http://www.linuxsir.org/bbs/showthread.php?t=184320
gcc:http://download.chinaunix.net/download/0001000/69.shtml

阅读全文

与gas编译bin文件相关的资料

热点内容
linuxc多进程 浏览:649
android飞行游戏 浏览:965
数据挖掘常见算法 浏览:130
python单实例化 浏览:351
str中python 浏览:89
java的equals用法 浏览:845
奥维云服务器怎么开通 浏览:171
js取得服务器地址 浏览:812
起点中文网小说缓存在哪个文件夹 浏览:216
java疯狂讲义pdf 浏览:300
推有钱app在哪里 浏览:745
宁波鲍斯压缩机 浏览:93
新建文件夹电影2完整版演员表 浏览:988
空调压缩机为什么不能放到冷库用 浏览:89
江西云服务器节点虚拟主机 浏览:997
新氧app如何测试脸型 浏览:688
个税app如何查询社保 浏览:495
安卓设备快充什么时候开启的 浏览:13
ipad怎么用安卓手机传文件 浏览:584
编辑程序员视频 浏览:634