热烈庆祝,需要掌握该技术的人来这里学习。
今天工程师在AT91RM9200上跑通了GPRS模块驱动。
运行出现如下错误:
[root@S3C2410SMDK /]$pppd
/usr/sbin/pppd: 1: Syntax error: "(" unexpected
而我移植的另外一个h 能正常运行
[root@S3C2410SMDK /]$pppd
/usr/sbin/pppd: 1: Syntax error: "(" unexpected
[root@S3C2410SMDK /]$h
Hello World!
Hello World!
Hello World!
Hello World!
Hello World!
两个程序都是用gcc-3.3交叉编译的.
我的ppp用的是2.4.3
以前我也用过2.4.1在2.95.3下编译也不能执行
错误的提示是说语法错误,"("是多余的.但是我不知道为什么会产生这样的错误.应该不是ppp程序本身的问题的吧.
不知道各位能不能给我点提示,问题到底是出在哪里.
谢谢!
-----------------------------------------------------------
找了好久才找到原因
ppp交叉编译的参数好像是不能这样传的;
$make ARCH=arm CROSS_COMPILE=/../arm-linux-
我用如下方法编译成功之后就能在板子上跑了;
$export CROSS_COMPILE=/../arm-linux-
$export CC=/../arm-linux-gcc
$make
请问有人知道这是为什么不?
好像很多的交叉编译都是用的上面那种方法.
我是新手,说的做的不对的地方还请各位指正!
没有装中文输入法,英文又很烂,大家将就看下吧
有什么不对的地方欢迎指教!
Tools list:
Kernel: 2.4.18
Sysvinit:2.86
Tinylogin:1.4
CC:3.3
Glibc: 2.2.5
PPP: 2.4.1
U-boot:1.1.1
Do it like this:
At first, recompile your kernel to support PPP:
$make menuconfig //to compile ppp in your kernel
$make ARCH=arm CROSS_COMPILE=/../arm-linux- zImage
$./mkimage2410 uImage //then you get kernel uImage
The second step, make a ramdisk filesystem:
1. Compile Busybox
$make menuconfig //choose the commands you need
Build options ---->
[*] Build BusyBox as a static binary (no shared libs)
[*] Do you want to build BusyBox with a Cross Compiler?
(/usr/local/arm/3.3/bin/arm-linux-) Cross Compiler prefix
$make
$make PREFIX=/../rootfs/ install
2. Compile System V init
$cd src
$make CROSS=/../arm-linux- PREFIX=/../rootfs/ all
$make PREFIX=/../rootfs install
3. Compile Tinylogin
$make CROSS=/../arm-linux- PREFIX=/../rootfs/ all
$make PREFIX=/../rootfs/ install
The third step, cross compile your PPP:
$export CROSS_COMPILE=/../arm-linux-
$export CC=/../arm-linux-gcc
$make
then, you'll get executable programs pppd,pppdump,pppstats and chat in directory: /../ppp-2.4.1/pppd,/../ppp-2.4.1/pppdump,/../ppp-2.4.1/pppstats and /../ppp-2.4.1/chat.
Copy these files to /../rootfs/usr/sbin
cd to the rootfs/
$mkdir etc dev
$cd dev
$mknod 600 console 5 1
$cd ..
then configures the files and directories such as 'inittab' 'fstab' 'host.conf' 'rc.d/' and 'ppp/' in /etc
Finally, get the glibc files which you need to rootfs/lib from /../3.3/lib.
和和~~~~我来翻译一下~~~~:
PPP拨号在ARM2410平台上的移植
本次PPP移植是在三星arm2410的平台上进行的,所用的工作环境为:
Kernel: 2.4.18
Sysvinit:2.86
Tinylogin:1.4
Glibc: 2.2.5
CC:3.3
PPP: 2.4.1
U-boot:1.1.3
一、具体操作步骤
首先编译内核支持 PPP:
$make menuconfig l
$make ARCH=arm CROSS_COMPILE=/../arm-linux- zImage
$./mkimage2410 uImage
其中mkimage2410文件来自u-boot1.1.1 需要根据你的路径修改mkimage2410的内容,指定mkimage文件的位置。
第二步,制作文件系统:
1. 编译Busybox
$make menuconfig
Build options ---->
[*] Build BusyBox as a static binary (no shared libs)
[*] Do you want to build BusyBox with a Cross Compiler?
(/usr/local/arm/3.3/bin/arm-linux-) Cross Compiler prefix
$make
$make PREFIX=/../rootfs/ install
注意:Busybox的README中说用make busybox 来编译busybox但是这样做好像有点问题,有时不能成功,其实直接用make就行了。
2. 编译System V init
$cd src
$make CROSS=/../arm-linux- PREFIX=/../rootfs/ all
$make PREFIX=/../rootfs install
3. 编译 Tinylogin
$make CROSS=/../arm-linux- PREFIX=/../rootfs/ all
$make PREFIX=/../rootfs install
4.交叉编译 PPP:
$export CROSS_COMPILE=/../arm-linux-
$export CC=/../arm-linux-gcc
$make
这样就在目录: /../ppp-2.4.1/pppd,/../ppp-2.4.1/pppdump,/../ppp-2.4.1/pppstats and /../ppp-2.4.1/chat下得到了可执行程序pppd,pppdump,pppstats 和 chat.
将它们复制到 /../rootfs/usr/sbin 目录下
移到文件系统根目录
#mkdir etc dev
#cd dev
#mknod 600 console 5 1
#mknod ppp c 108 0
#cd ..
配制/etc目录下的文件和文件夹,如: inittab fstab host.conf rc.d以便内核参正确启动文件系统.
最后,从/../3.3/lib目录下选出所需要的库文件放到文件系统根目录rootfs/lib下面.
$su
#mkdir tmp/initrd
#dd if=/dev/zero of=images/initrd.img bs=1k count=8192
#/sbin/mke2fs –F –v –m0 images/initrd.img
#mount –o loop images/initrd.img tmp/initrd
#cp –av rootfs/* tmp/initrd
#umount tmp/initrd
#exit
$gzip –9 < images/initrd.img > images/initrd.bin
这样,就得到了我们所需要的uImage 和initrd.bin.将U-boot烧到板子上并设置好环境变量后就能通过tftp下载kernel 和ramdisk到目标板上运行了.
总结:嵌入式linux下应用程序的移植,实际上是一个系统平台转换的过程。最好能先在宿主机(X86)上对程序源文件进行从头到尾的编译、连接,让它首先在宿主机上跑起来。弄清每一个步骤及其工作的具体内容,在向目标板移植的过程中一定要保证交叉编译,其它文件配置和操作步骤跟宿主机上几乎完全一样。
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |