arm-linux-gcc 的使用
1. 编译 C 文件,生成 elf 可执行文件 h1.c 源文件
#include <stdio.h> void hellofirst(void)
{
printf("The first hello! \n");
}
h2.c 源文件
#include <stdio.h> void hellosecond(void)
{
printf("The second hello! \n");
}
hello.c 源文件
#include <stdio.h> void hellosecond(void); void hellofirst(void);
int main(int argc, char *argv[])
{
hellofirst(); hellosecond(); return(0);
}
编译以上 3 个文件,有如下几种方法:
方法 1:
[arm@localhost gcc]#armlinuxgcc c h1.c [arm@localhost gcc]#armlinuxgcc c h2.c
[arm@localhost gcc]#armlinuxgcc o hello hello.c h1.o h2.o
方法 2:
[arm@localhost gcc]#armlinuxgcc c h1.c h2.c [arm@localhost gcc]#armlinuxgcc o hello hello.c h1.o h2.o 方法 3:
[arm@localhost gcc]#armlinuxgcc c o h1.o h1.c
[arm@localhost gcc]#armlinuxgcc c o h1.o h1.c [arm@localhost gcc]#armlinuxgcc o hello hello.c h1.o h2.o 方法 4:
[arm@localhost gcc]#armlinuxgcc o hello hello.c h1.c h2.c
c: 只编译不连接。
o: 编译且连接。
2. 产生一个预处理文件 当要看一个宏在源文件中产生的结果时,比较合适。
[arm@localhost gcc]#armlinuxgcc E h1.i h1.c
E: 产生一个预处理文件.
3. 产生一个动态库
动态库是在运行时需要的库。
[arm@localhost gcc]#armlinuxgcc c fpic h1.c h2.c [arm@localhost gcc]#armlinuxgcc shared h1.o h2.o o hello.so [arm@localhost gcc]#armlinuxgcc o hello hello.c hello.so
把 hello.so 拷贝到目标板的/lib 目录下,把可执行文件拷贝目标板的/tmp 目录下,在目标板上运行 hello.
#/tmp/hello
或把 hello.so 和 hello 一起拷贝到/tmp 目标下,并设置 LD_LIBRARY_PATH 环境变量
#export LD_LIBRARY_PATH =/tmp:$LD_LIBRARY_PATH
#/tmp/hello
arm-linux-gcc 的使用的更多相关文章
- Ubuntu12.4 64位 安装 arm linux gcc 4.3.2
一.下载arm linux gcc 4.3.2 http://pan.baidu.com/share/link?shareid=1575352696&uk=2754759285&fid ...
- linux gcc 区分32位或64位编译 && 请问arm存储,是以小端格式还是以大端格式?
linux gcc 区分32位或64位编译 Linux系统下程序如何区分是64位系统还是32位系统 经过对include的翻查,最后确定gcc以__i386__来 进行32位编码,而以__x86_ ...
- 构建 ARM Linux 4.7.3 嵌入式开发环境 —— BusyBox 构建 RootFS
上一篇我们已经成功将 ARM Linux 4.7.3 的内核利用 U-BOOT 引导了起来.但是细心的你会发现,引导到后面,系统无法启动,出现内核恐慌 (Kernel Panic). 原因是找不到文件 ...
- 构建 ARM Linux 4.7.3 嵌入式开发环境 —— U-BOOT 引导 Kernel
经过若干天的反复测试,搜索.终于成功利用 Qemu 在 u-boot 下引导 ARM Linux 4.7.3 内核.如下详细解释整个构建过程. 准备环境 运行环境:Ubuntu 16.04 需要的虚拟 ...
- Arm Linux系统调用流程详细解析
Linux系统通过向内核发出系统调用(system call)实现了用户态进程和硬件设备之间的大部分接口. 系统调用是操作系统提供的服务,用户程序通过各种系统调用,来引用内核提供的各种服务,系统调用的 ...
- Windows平台交叉编译Arm Linux平台的QT5.7库
1.准备交叉编译环境 环境说明:Windows 7 64位 此过程需要: (1)Qt库开源代码,我使用的是5.7.0版本: (2)Perl语言环境5.12版本以上: (3)Python语言环境 2.7 ...
- 在Ubuntu上建立Arm Linux 开发环境
我使用的是友善2410的板子,以前都是用Fedora,现在家里的电脑被我转为Linux专用的了,装的是Ubuntu.但是嵌入式还是要玩的,在装载过程中也遇到一些小麻烦.在此记录一下,一来自己比较健忘, ...
- How to build and run ARM Linux on QEMU from scratch
This blog shows how to run ARM Linux on QEMU! This can be used as a base for later projects using th ...
- 009-2010网络最热的 嵌入式学习|ARM|Linux|wince|ucos|经典资料与实例分析
前段时间做了一个关于ARM9 2440资料的汇总帖,很高兴看到21ic和CSDN等论坛朋友们的支持和鼓励.当年学单片机的时候datasheet和学习资料基本都是在论坛上找到的,也遇到很多好心的高手朋友 ...
- 【Qt开发】【VS开发】【Linux开发】OpenCV、Qt-MinGw、Qt-msvc、VS2010、VS2015、Ubuntu Linux、ARM Linux中几个特别容易混淆的内容
[Qt开发][VS开发][Linux开发]OpenCV.Qt-MinGw.Qt-msvc.VS2010.VS2015.Ubuntu Linux.ARM Linux中几个特别容易混淆的内容 标签:[Qt ...
随机推荐
- synchronized与ReenTranLock的区别
1.synchronized 回顾 表示原子性和可见性 原子性:一次只有一个线程能执行lock保护的代码 可见性:线程更新了变量后会将其更新到主内存里面 volatile可以实现可见性,不能实现原子性 ...
- JUC源码分析-集合篇(三)ConcurrentLinkedQueue
JUC源码分析-集合篇(三)ConcurrentLinkedQueue 在并发编程中,有时候需要使用线程安全的队列.如果要实现一个线程安全的队列有两种方式:一种是使用阻塞算法,另一种是使用非阻塞算法. ...
- Linux apache httpd virtual配置
必须要关闭 selinux,否则无法访问目录
- Centos 7 技巧
查看系统版本详细信息 lsb_release -a 更改邮件MTA alternatives --config mta
- 并发新构件之Exchanger:交换器
Exchanger:JDK描述:可以在对中对元素进行配对和交换的线程的同步点.每个线程将条目上的某个方法呈现给 exchange 方法,与伙伴线程进行匹配,并且在返回时接收其伙伴的对象.Exchang ...
- web前端Vue+Django rest framework 框架 生鲜电商项目实战✍✍✍
web前端Vue+Django rest framework 框架 生鲜电商项目实战 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频 ...
- 从零开始学Jqueue
http://www.cnblogs.com/zhangziqiu/archive/2009/04/30/jQuery-Learn-1.html
- [翻译]windows下 连接到 bitnami的phpmyadmin
bitnami 因为安全考虑,只能 localhost 访问 phpmyadmin 为了能通过SSH 隧道访问 phpMyAdmin,你需要一个ssh 客户端.参考文章介绍使用中选择使用 PuTTY, ...
- Zabbix-server及zabbix-web安装手册(centos7)
注:本实验环境在centos7mini下实验,具体相关软件版本最好一致,避免依赖关系缺失. 当然也可以新建用户zabbix(不使用root,避免安全隐患),在zabbix下执行操作,加sudo提升权限 ...
- 【JZOJ6403】a
description analysis 考虑\((0,0,0)\)走到某个点\((i,j,k)\)的贡献,相当于插板问题 \(i+j\)个空插\(k\)个板可以有空,\(i\)个空插\(j\)个板可 ...