- 论坛徽章:
- 0
|
下面是我写的一个shell脚本 很简单 就是到一个目录下 执行make
但是我发现一个问题:
如果是我手动make完一个模块后,执行可执行文件,什么问题都没有
但是我使用下面这个shell脚本自动编译完成后,执行可执行文件时就会报错:
“
Dependent module libexpat.a(libexpat.so.1) could not be loaded
Cannot load module libexpat.a(libexpat.so.1)
”
觉得非常蹊跷 同样是make 只不过一个是手动cd到一个目录然后敲入make进行编译
一个是自动跳到一个目录然后自动编译 为什么一个有错 一个没错呢?
是不是有什么shell编程的机制我还不明白?
- #!/usr/bin/sh
- # Written by karl412 on 2007-06-10
- # auto-make all modules
- MPPSRC_DIR=/home/mpp/src.work
- mppd_make() {
- echo "\n+++++++++++++++++++MPPD+++++++++++++++++++++\n"
- cd $MPPSRC_DIR/mppd
- make clean;make
- }
- mppcrond_make() {
- echo "\n+++++++++++++++++++MPPCROND+++++++++++++++++++++\n"
- cd $MPPSRC_DIR/mppcrond
- make clean;make
- }
- err_msg() {
- if [ $? != 0 ]
- then
- echo "\n++++++++++++++There is something wrong in $1++++++++++++\n"
- exit
- fi
- }
- # Shell Begin
- if [ $# != 1 ]
- then
- echo "[Usage]: make.sh module_name"
- echo "[ Note]: if module_name is 'all', then compile all modules "
- exit
- fi
- case $1 in
- mppd )
- mppd_make; err_msg "MPPD"
- exit;;
- mppcrond )
- mppcrond_make; err_msg "MPPCROND"
- exit;;
- all )
- mppd_make; err_msg "MPPD"
- mppcrond_make; err_msg "MPPCROND"
- exit;;
- esac
复制代码 |
|