当前位置:首页 » 编程软件 » arm编译参数

arm编译参数

发布时间: 2022-07-25 14:15:08

Ⅰ 叙说ARM 调试环境和ADS的使用实验中设置项目相关编译参数的原因

任何一种开发环境,都可以设置参数,
诸如预定义的宏,连接地址,头文件所在包含路径之类的东西
都可以被称为工程项目的参数。

////////////////////////////////////////////////////////////////////////////////////////////////
就专业程度和实在程度而言,杭州巨立安(JulianTec)
是您在arm架构下学习嵌入式linux研发的上佳指导!

Ⅱ jdk nginx. redis 在arm和x86要分别编译

一、注意openssl和pcre只需要把源码压缩,不需要单独交叉编译!
开始的时候不知道,傻傻的把这两个库弄半天把它们编译过去了。谁知道nginx的--with-pcre和--with-openssl选项,指定的是这两个库源代码的路径,并非安装路径!nginx的编译系统只会从/usr、/usr/local等少数几个目录查找是否有预编译的pcre、zlib、openssl等库。对于交叉编译,直接把交叉编译后的pcre等安装在/usr、/usr/local显然不合适,因此需要使用--with-pcre和--with-openssl指定源代码的位置

二、交叉编译nginx
在x64 linux上面编译非常简单的nginx,没想到在交叉编译的时候巨多坑。下面一个configure是编译成功的配置

进入/usr/local/src目录,创建nginx文件夹。入刚创建的nginx目录,下载nginx的tar包,解压,进入解压生成的目录,进行配置(后面有补充,建议通读一遍)编译安装查找安装路径,在执行make编译时,可以添加要编译的参数,已安装完成,比如我现在要新增 http_stub_status_mole 模块参数,那么我只要把该参数添加进去然后重新编译即可,需要注意的是原先编译过的参数也要加进来。
进入nginx的安装目录,因为我安装的时候没有添加任何参数,所以这里我只需要执行

我这里只需要这一个模块,如果你安装的nginx还使用其他的模块,记得在上面的编译命令中加上。
另外,这里只能 make 千万别 make install,否则就覆盖安装了。

  • make完成后,在源码目录下会有一个objs目录,objs目录下就多了个nginx,这个就是新版本的程序了;

  • 然后将objs目录下的nginx替换之前已经安装过的nginx(建议将旧的nginx程序做下备份)


Ⅲ 关于ARM交叉编译的问题

我也遇到你这样的问题,你的解决了吗?

Ⅳ GCC编译器的参数与空格

按照INSTALL中的介绍,也是常用的方法,在configure的时候,加上–host=arm-linux,结果没有实现我们要的效果,没有将编译器从默认的
gcc改成arm-linux-gcc,编译器还是用的默认的gcc:
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
./configure
–host=arm-linux
loading
cache
./config.cache
………………..
checking
for
gcc…
(cached)
gcc
checking
whether
the
C
compiler
(gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(gcc
-O2
)
is
a
cross-compiler…
no
………………..
后来经过多次尝试,最后受默认的
CFLAGS=-O2
./configure
进行配置所启发,想到,是否可以将CC参数传入到configure中,
结果证实,如果没有自己的cache-file,即时加了对的CC参数,也还是无法传入:
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
CC=arm-linux-gcc
./configure
–host=arm-linux
loading
cache
./config.cache
………………..
checking
for
gcc…
(cached)
gcc
checking
whether
the
C
compiler
(gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(gcc
-O2
)
is
a
cross-compiler…
no
checking
whether
we
are
using
GNU
C…
(cached)
yes
………………..
而且,如果CC参数放在configure后面:
./configure
CC=arm-linux-gcc
则不能识别:
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
./configure
CC=arm-linux-gcc
configure:
warning:
CC=arm-linux-gcc:
invalid
host
type
………………..
参数传递必须像
CFLAGS=-O2
./configure
一样,将参数设置放在configure的前面:
CC=arm-linux-gcc./configure
才能识别的。
必须要自己制定自己的cache-file
然后用./configure进行新配置,加上CC参数,才会即时生效,编译器才可以变成我们要的arm-linux-gcc:
[crifan@localhost
lrzsz-0.12.20]$
CC=arm-linux-gcc
./configure
–cache-file=cache_file_0
–prefix=/usr/crifan/lrzsz
………………..
checking
for
gcc…
arm-linux-gcc
checking
whether
the
C
compiler
(arm-linux-gcc
)
works…
yes
checking
whether
the
C
compiler
(arm-linux-gcc
)
is
a
cross-compiler…
yes
checking
whether
we
are
using
GNU
C…
yes
………………..
否则,就无法将我们的CC参数传入了:
[crifan@localhost
lrzsz-0.12.20]$
CC=arm-linux-gcc
./configure
–prefix=/usr/crifan/lrzsz
………………..
checking
for
gcc…
(cached)
gcc
checking
whether
the
C
compiler
(gcc
)
works…
yes
checking
whether
the
C
compiler
(gcc
)
is
a
cross-compiler…
no
checking
whether
we
are
using
GNU
C…
(cached)
yes
………………..
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
CC=arm-linux-gcc
./configure
–cache-file=cache_file_0
loading
cache
cache_file_0
………………..
checking
for
gcc…
arm-linux-gcc
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
is
a
cross-compiler…
yes
checking
whether
we
are
using
GNU
C…
yes
最好此处在加上–prefix=/usr/crifan/lrzsz,表示具体安装到哪里
[crifan@localhost
lrzsz-0.12.20]$
CFLAGS=-O2
CC=arm-linux-gcc
./configure
–cache-file=cache_file_0
–prefix=/usr/crifan/lrzsz
loading
cache
cache_file_0
………………..
checking
for
gcc…
arm-linux-gcc
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
works…
yes
checking
whether
the
C
compiler
(arm-linux-gcc
-O2
)
is
a
cross-compiler…
yes
checking
whether
we
are
using
GNU
C…
yes
………………..
其中,/usr/crifan/lrzsz是已经建立好的,已经存在的文件夹,上面这样表示编译后,
将生成的可执行文件安装拷贝到那个目录.

Ⅳ 有人知道怎么把编译路径arm-linux-androideabi-4.6改成4.8的

1.将ndk中的arm-linux-androideabi-addr2line可执行文件的路径加入配置文件~/.bashrc中,例如:exportPATH=$PATH:~/dlna/android-ndk-r6b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin2.使配置生效:source~/.bashrc3.使用工具。例如:arm-linux-androideabi-addr2line-C-f-e~/workspace/DLNA/libs/armeabi/libctrlpt.so0003deb4其中,0003deb4为堆栈信息中pc的值。android应用崩溃的调试方法有两种方法可以分析crash的堆栈信息1google提供了一个python脚本,可以从/p/android-ndk-stacktrace-analyzer/下载这个python脚本,然后使用adblogcat-d>logfile导出crash的log,使用arm-eabi-objmp位于build/prebuilt/linux-x86/arm-eabi-4.2.1/bin下面把so或exe转换成汇编代码,如:arm-eabi-objmp-Smylib.so>mylib.asm,使用脚本pythonparse_stack.py2直接使用NDK下面的arm-linux-androideabi-addr2line(D:\android-ndk-r8\toolchains\arm-linux-androideabi-4.4.3\prebuilt\windows\bin\arm-linux-androideabi-addr2line.exe)例如:arm-linux-androideabi-addr2line-C-f-elibxxx.so0x#####(address)android调试工具addr2line使用补充使用addr2line追踪自有动态库(so文件)的bug,补充:解决出现??:0,没法展示源代码行数的问题在Android.mk文件中:Java代码LOCAL_CFLAGS:=-D__STDC_CONSTANT_MACROS-Wl,-Map=test.map-g补充2个编译参数-Wl,-Map=test.map-g.增加gcc警告和调试标志arm-linux-androideabi-addr2line-C-f-e/项目目录/obj/local/armeabi/libfaa_jni.so0024362etip:1,注意调试文件的位置在obj目录下,并非libs目录下生成的so文件2,0024362e为出错的机制位置还有:在jni/目录下增加Application.mk文件,修改为debug模式,进行调试APP_OPTIM:=debug

Ⅵ 如何编译arm上运行的qt2可执行文件

编译好的QT的程序,一般会有几个.CPP\.h文件,这么多的文件我们要怎么样编译。首先,我们需要安装QT版本的库,一定要注意,这个库文件一定和开发板上的是同一个库。我们假设这个库名字叫qtembed450-arm。以下步骤一定要注意:

1.安装目录一定要在“/usr/local/”下;

2.安装成功后,这步非常关键,一定要设置环境变量,而且,我们要设置三个环境变量,这样做有三个目的:①可以在任何路径下用库里的命令②编译时候可以指定编译规则为arm-linux-g++③编译时候可以指定到所需要的库文件。那么安装后,输入一下命令:gedit /root/.bashrc.这个命令执行后就进入到设置环境变量的地方,我们要加入以下三个环境变量的设置:
export PATH=$PATH:/usr/local/qtembed450-arm/bin
export LD_LIBRARY_PATH=$LD_LTBRARY_PATH:/usr/local/qtembed450-arm/lib
export QMAKESPEC=/usr/local/qtembed450-arm/mkspecs/default

以上设置非常的重要,非常的关键。呵呵,先照着设置,具体原因我会细谈。注意,我编译用的很重要的qmake-arm 命令,就在/usr/local/qtembed450-arm/bin下,可以打开看看哦!环境变量设置好后,用which qmake-arm 命令来确认下是否成功,呵呵。

3.准备工作做到这里,算是进行一半了,哎,真累啊!还要接着写呢。接下来我们要把我们的编译好的QT程序的文件夹打开,把里面的 .CPP/.h文件拷贝出来,新建立一个文件夹;

4.把以上的文件里的.cpp .h文件复制后新建立一个文件夹。

5.新文件夹建立后,在linux终端中进入到该文件夹所在目录下,执行这个命令:qmake-arm -project命令,千万注意,-project 和arm之间一定要有空格啊!该命令执行后,会生成一个.pro文件,紧接着呢,执行qmake-arm命令,该命令执行后呢,会生成一个Makefile文件,这步很关键哦,没有这步就不会有Makefile文件,一般在这步会出现很多错误,就是库没有发现之类,这个时候,一定要检查前面的步骤,仔细检查看是否是错误。我们这个时候打开Makefile文件看一下,会发现,里面的编译已经变成arm-linux-g++。这个时候,就踏实,接下来怎么办?还用问吗,直接make下就好了,哈哈,简单吧!看到上面的qtmyjpg文件了吗?这个是可以在开发板上运行的哦!接下来不用我说了吧,直接发送到开发板上执行,可以看到图片喽!

6.下到开发板上之后呢,通常会发现没有权限,执行chmod +x qtmyjpg 就可以了,但是注意,要执行这个qtmyjpg文件,一定要这样输入命令:./qtmyjpg -qws为什么需要加这个参数呢?很简单,你不加执行时会出现错误原因,自己看下吧,哈哈!

7.一般这个时候触摸屏需要矫正。进入“/usr/tslib/bin/”,查看里面的文件,有一个“ts-calibrate”文件,执行这个文件,./ts-calibrate 后,可以看到LCD屏幕上出现十字点,用触摸笔点一下就可以,至此,整个QT在LCD上显示整理完毕,花了我半下午时间加上对曹老师的请教,终于完成,嘿嘿!赶紧试试哦!

Ⅶ 深度linux的arm-linux-gnueabihf-gcc编译参数如何配

一般来说,交叉编译工具是用于在一种架构的主机(例如x86)上,编译另一种主机(例如arm)运行的程序,在这个编译期间,需要用到的头文件/库,往往需要从一个叫目标文件系统(sysroot)的路径开始查找。

sysroot里包含usr,lib,usr/lib usr/include等文件夹结构和必要的头文件和库,你理解为目标机器上的整个文件系统,搬到你这台电脑上,然后作为一个文件夹存在。

交叉编译原则上不能用主机(host)的头文件,

  • 这首先是因为编译器在查找头文件的相对路径时,交叉编译器会配置为查找目标平台架构的位置,和主机的gcc不一样,这也是为什么它去arm-linux-gnueabihf这个目录去寻找的原因。

  • 其次主机和目标机的系统版本有差异,再加上处理器架构的差异,往往有很多兼容性问题,甚至有难以解决的编译错误。

  • 如果一定要用本机的头文件系统来凑合,那么需要把所有的-I都列出来,即不仅需要-I/usr/include,还需要-I/usr/include/xxx,甚至要创建一些文件夹的符号链接指向你主机的这些头文件文件夹。即使这些,往往也未必成功,有些头文件不同的系统架构,会不完全一样甚至缺失。

交叉编译一般无法使用主机的库(so)文件

  • 主机和目标机往往架构不同,库完全不能使用

  • 可能遇到主机和目标机架构相同的情况,比如你在intel64上编译一套运行在intel64位手机的程序,但是库兼容性的问题仍然存在。

最后结论:你这个问题,如果你是为了另一套机器(比如arm开发板编译),那么需要搞一套目标机的文件系统才能顺利编译。

对了,目标文件系统需要编译了python和dev头文件/库,好多嵌入式设备裁剪的很厉害,都不用python。

Ⅷ 关于ARM arm-linux-gcc编译器的疑问

首先编译器的选择跟处理器相关,所以arm的处理器一般只能采用arm相关的编译器。所以严格上来讲,根据所采用的ARM芯片的不同而采用不同版本的编译器也是对的,而且也建议这样做。但是编译器一般是向下兼容的,如果你的程序简单,你用了老版本的编译器编译,当然也可以在新处理器下运行咯,我记得我用gcc编译的程序,也可以在atmel9260的板子上运行呢。

热点内容
加密工具源码 发布:2025-02-06 05:44:52 浏览:13
笔记本可用存储多大 发布:2025-02-06 05:44:48 浏览:157
ftp登录后没有反应 发布:2025-02-06 05:29:41 浏览:175
linux建目录命令 发布:2025-02-06 05:29:06 浏览:724
安卓所有照片在哪里 发布:2025-02-06 05:16:32 浏览:972
l2缓存作用 发布:2025-02-06 05:15:02 浏览:291
快播为什么连接不了服务器 发布:2025-02-06 05:12:51 浏览:386
不吸烟解压 发布:2025-02-06 05:12:07 浏览:282
php淘汰 发布:2025-02-06 04:59:39 浏览:74
omr编程 发布:2025-02-06 04:58:15 浏览:591