移植 expect(openwrt X86主機)

2021-07-04 05:29:12 字數 2617 閱讀 6344

tcl原始碼:

.sourceforge

.net/project/tcl/tcl/8.6

.4/tcl8.6

.4-src.tar

.gzexpect原始碼:

.sourceforge

.net/project/expect/expect/5.45/expect5.45

.tar

.gz

由於 expect 是基於 tcl 語言的,所以需要先編譯 tcl。

交叉編譯 tcl

tcl 直接交叉編譯,會提示重複定義失敗,所以先執行下面的宣告

export tcl_cv_type_64bit="long long"

export ac_cv_c_bigendian=no

export tcl_cv_strtod_buggy=1

export ac_cv_func_strstr=yes

export ac_cv_func_opendir=yes

然後 生成 makefile

.

/configure--

prefix=$pwd/tmp--

host=i486

-openwrt

-linux--

build=i686

-linux#-

-prefix

安裝路徑#-

-host

平台架構(編譯出的程式在哪個平台執行,就用那個平台的工具鏈名去掉

gcc)#-

-build

編譯的主機

生成 makefile 之後 就執行

make

# make 之後有提示錯誤,就解決掉錯誤

# 提示少某個標頭檔案,就去找個頭檔案 cp 過去。這次我缺少的標頭檔案,有一部分是直接拿的pc的標頭檔案

# make 之後 執行 make install

# 注意設定的安裝路徑

make install

交叉編譯 expect

由於 expect 不支援交叉編譯,所以生成 makefile 時需要先用 x86 的 gcc,生成 makefile 之後在修改 makefile 的cc

./configure --prefix=$pwd/tmp --with-tcl=/home/gino

/tcl8.6.4/unix

/tmp/lib --with-tclinclude=/home/gino

/tcl8.6.4/unix

/tmp/include

# --with-tcl 指定tcl安裝目錄下的lib路徑(要交叉編譯過的)

# --with--tclinclude 指定tcl安裝目錄下的 include 路徑

修改 makefile

cc      = i486-openwrt

-linux

-gcc

.

/configure--

prefix=$pwd/tmp--

host=i486

-openwrt

-linux--

build=i686

-linux

make

#make

有錯,想辦法搞定

make

install

將安裝目錄的 lib目錄下、include目錄下的檔案,拷貝到交叉工具鏈下對應的目錄

cp lib/* /opt/openwrt-i386-gcc/lib

cp inlucde/* /opt/openwrt-i386-gcc/include

做完這些之後,去到 expect 目錄,繼續執行 make,還是會報錯。需要改 expect 的 makefile

修改之後的內容如下:

expect: exp_main_exp.o $(pkg_lib_file)

$(cc) \

-pipe $ $ $ \

-wl,--export-dynamic \

-o expect exp_main_exp.o \

-l/work/src/openwrt_x86/expect5.45 -lexpect5.45 \

-l/work/src/openwrt_x86/expect/tcl8.4.20/unix/tmp/lib -ltcl8.4 \

-ldl -lieee1284 -lutil -lm \

-wl,-rpath,$ \

-wl,-rpath,$/$$

$(setuid) expect

再次 make 就成功了。

測試執行

要在目標機上執行這個程式,需要把交叉編譯後的 tcl(安裝目錄下) ieee(安裝目錄下) 的庫檔案(安裝目錄下的lib下的所有檔案) 以及 expect的動態庫(libexpect5.45.so) 和 expect的執行檔案都拷貝到目標機器上。

本文參考:

系統移植 核心移植

irom soc samsung固化的位址 iram soc 256k dram 片上外設 記憶體 norflash 讀快 啟動u boot noneflash 寫快 啟動u boot emmc 包括noneflash和讀寫noneflash的控制器 sdmmc sd卡 bl1 bl2 1.irom...

移植安裝mysql mysql移植問題

今天在實際開發中對於mysql資料庫進行移植發生的問題來說下.開始把本地data中的資料庫檔案拷貝到另一台機子上test,執行show tables 可以看到資料庫表,但是對錶進行任何操作都報錯 表不存在 原以為mysql的資料庫檔案 frm copy stick到本地安裝mysqldb目錄的dat...

系統移植 移植涉及的工作

1 移植涉及的工作 a 系統軟體 1 引導程式 初始化硬體,其目的為載入核心 2 核心 系統乙個核心功能的 3 檔案系統 內容 格式 b 編譯器 交叉編譯 在主機環境編譯,其編譯結果在目標環境下執行 2 交叉編譯器安裝 在linux環境下安裝軟體相當於windows下的綠色軟體,只解壓,然後配 置環...