刚接触Linux系统,然后还没等熟悉过来就接手了一个编译的活儿,就是要把IPMItool移植到ARM开发板上,一边编译一边学习,总是编译失败,这里我简单说下我的步骤,同时贴出一部分代码,希望大虾们指点迷津,不胜感激涕零。
首先,我是从官网上下载的IPMITool-1.8.11,解压到/home/erictang/ARM_IPMI/ipmitool/下,文件夹名为ipmitool-1.8.11,然后在ipmitool下创建文件夹inst(与ipmitool-1.8.11文件夹同级),用来拷贝编译完成的IPMItool。
然后cd /home/erictang/ARM_IPMI/ipmitool-1.8.11,进入要编译的文件夹
接下来,配置选项
./configure --prefix=/home/erictang/ARM_IPMI/ipmitool/inst --mandir=/home/erictang/ARM_IPMI/ipmitool/inst/share/man --host=arm-linux CC=arm-linux-gcc
返回结果为:configure: error: cannot run test program while cross compiling(貌似在编译时不能运行test program),这一步我觉得有问题,因为如果我去掉--host和CC参数,返回的结果就是:
ipmitool 1.8.11
Interfaces
lan : yes
lanplus : no
open : yes
free : no
imb : yes
bmc : no
lipmi : no
Extra tools
ipmievd : yes
所以我就去掉了--host和CC参数
再接下来开始vi Makefile
把其中的AR = ar改为AR=arm-linux-ar,ARCH=i686改为ARCH=arm,CC = gcc改为CC=arm-linux-gcc,CFLAGS = -g -O2 -fno-strict-aliasing改为CFLAGS = ,CPP = gcc -E改为CPP = arm-linux-gcc -E,CXX = g++改为CXX = arm-linux-g++,CXXCPP = g++ -E改为CXXCPP = arm-linux-g++ -E,CXXFLAGS = -g -O2改为CXXFLAGS = ,OS = linux-gnu改为OS = arm-linux-gnu,PSTAMP = i686-redhat-linux-gnu改为PSTAMP = arm-linux-gnu,ac_ct_AR = ar改为ac_ct_AR = arm-linux-ar,ac_ct_CC = gcc改为ac_ct_CC = arm-linux-gcc,ac_ct_CXX = g++改为ac_ct_CXX = arm-linux-g++,build = i686-redhat-linux-gnu改为build=arm--linux-gnu,build_cpu = i686改为build_cpu = arm,build_os = linux-gnu改为build_os = arm-linux-gnu,host = i686-redhat-linux-gnu改为host = arm-linux-gnu,target = i686-redhat-linux-gnu改为target = arm-linux-gnu,target_cpu = i686改为target_cpu = arm,target_os = linux-gnu改为target_os = arm-linux-gnu,然后保存,退出vi。
接下来开始make,一大堆信息,在我这个小白看来,貌似没有问题,完后开始make install,也没有什么大问题。貌似一切成功之后,进入inst文件夹中bin下查看生成的ipmitool文件,使用file ipmitool指令,得到的信息如下:
ipmitool: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, not stripped
看信息,貌似生成的只是适用于pc下的linux中的IPMITOOL
额,这个问题已经折腾了我一周了,也不敢奢望哪位大侠能直接给我源码,只是希望能够指点下小弟,小弟确实是小白,接触Linux系统不到两周,目前所用的系统为Fedora16
------最佳解决方案--------------------------------------------------------
偶也比较菜,尝试着说下..
楼主的 arm-linux-gcc 声明在环境变量里了么? 即在命令行下,arm-linux-gcc 可用否?
这个可用后,再试着configure时候加CC参数。 可能就能行了。
如果不行的话,LZ是否需要编译arm linux的源码? 可以跟arm linux的源码一起编译。 放在,driver下面,创建个文件夹,修改driver的Makefile,在最下面加入 obj-m += /文件夹名
至于文件夹里的内容, 就是你那个ipmitool。
编译arm板的内核源码,顺带就把你这个编译了.(很多都是这样编译滴...)
------其他解决方案--------------------------------------------------------
希望大家也可以互相讨论下,目前关于IPMI在ARM平台上的移植的资料几乎没有找到,当然,也可能我涉及不深,没有看到,还希望高手指点迷津,小弟不胜感激涕零
------其他解决方案--------------------------------------------------------
诶,有点儿明白,但又有点儿糊涂,我明儿去公司试验下,我现在是真的头大,为了这个折腾的我都没个人样儿了,脑子里全是这个,然后周末闲着没事儿在家折腾了下黑苹果,然后Dota了几盘,没顾得上上网,感谢提供思路!