2016-05-15 24 views
2

"gcc_4.8.3-1_mvebu.ipk"を含む "OpenWrt Chaos Calmer 15.05.1"(mvebuアーキテクチャ)とその他の必要なすべてのパッケージがインストールされた "Linksys WRT1200AC"ルータがあります。OpenWRT内でgccを使用してコンパイルする方法

私はコマンドを使用して、(「Hello World」のに似た簡単なもの、)Cソースファイルをコンパイルしようとした

#gcc mysource.c -o myprogram 
#chmod +x myprogram 

#./myprogram 
myprogram: line 1: syntax error: unexpected word (expecting ")") 

コンパイラは私にエラーや警告を与えませんが、プログラムが」することができます開始する。 別のアーチから.ipkパッケージをルータにインストールするのと同じです。 だから、gccは別のCPU/Archのソースをコンパイルしていると思います。 ルータのCPUがある: "1.33 GHzの(88F6820-A0 C133)@マーベルアルマダ38Xデュアルコア"

# uname -a 
Linux OW 3.18.23 #1 SMP Sun Jan 31 12:53:24 CET 2016 armv7l GNU/Linux 

# grep 'model name' /proc/cpuinfo 
model name  : ARMv7 Processor rev 1 (v7l) 
model name  : ARMv7 Processor rev 1 (v7l) 

右のCPU /アーチオプションでOpenWrtの内側に私のソースをコンパイルするための正しいコマンドラインは何ですか? 私は別の "-march/-mcpu"で試しましたが、成功しませんでした。

これは、上の冗長である:

# gcc -v mysource.c -o myprogram 
Using built-in specs. 
COLLECT_GCC=gcc 
COLLECT_LTO_WRAPPER=/usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/lto-wrapper 
Target: arm-openwrt-linux-uclibcgnueabi 
Configured with: /home/buildbot/slave-local/mvebu_generic/build/build_dir/target-arm_cortex-a9+vfpv3_uClibc-0.9.33.2_eabi/gcc-4.8.3/configure --target=arm-openwrt-linux --host=arm-openwrt-linux --build=x86_64-linux-gnu --program-prefix= --program-suffix= --prefix=/usr --exec-prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --libexecdir=/usr/lib --sysconfdir=/etc --datadir=/usr/share --localstatedir=/var --mandir=/usr/man --infodir=/usr/info --disable-nls --build=x86_64-linux-gnu --host=arm-openwrt-linux-uclibcgnueabi --target=arm-openwrt-linux-uclibcgnueabi --enable-languages=c,c++ --with-bugurl=https://dev.openwrt.org/ --with-pkgversion='OpenWrt GCC 4.8.3' --enable-shared --disable-__cxa_atexit --enable-target-optspace --with-gnu-ld --disable-nls --disable-libmudflap --disable-multilib --disable-libgomp --disable-libquadmath --disable-libssp --disable-decimal-float --disable-libstdcxx-pch --with-host-libstdcxx=-lstdc++ --prefix=/usr --libexecdir=/usr/lib --with-float=soft 
Thread model: posix 
gcc version 4.8.3 (OpenWrt GCC 4.8.3) 
COLLECT_GCC_OPTIONS='-v' '-o' 'myprogram' '-mfloat-abi=soft' '-mtls-dialect=gnu' 
/usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/cc1 -quiet -v -imultilib . -imultiarch arm-linux-gnueabi mysource.c -quiet -dumpbase myprogram.c -mfloat-abi=soft -mtls-dialect=gnu -auxbase mysource -version -o /tmp/ccojawQz.s 
GNU C (OpenWrt GCC 4.8.3) version 4.8.3 (arm-openwrt-linux-uclibcgnueabi) 
     compiled by GNU C version 4.8.3, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.1 
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 
ignoring nonexistent directory "/usr/local/include/arm-linux-gnueabi" 
ignoring nonexistent directory "/usr/local/include" 
ignoring nonexistent directory "/usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/../../../../arm-openwrt-linux-uclibcgnueabi/include" 
ignoring nonexistent directory "/usr/include/arm-linux-gnueabi" 
#include "..." search starts here: 
#include <...> search starts here: 
/usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/include 
/usr/lib/gcc/arm-openwrt-linux-uclibcgnueabi/4.8.3/include-fixed 
/usr/include 
End of search list. 
GNU C (OpenWrt GCC 4.8.3) version 4.8.3 (arm-openwrt-linux-uclibcgnueabi) 
     compiled by GNU C version 4.8.3, GMP version 4.3.2, MPFR version 2.4.2, MPC version 0.8.1 
GGC heuristics: --param ggc-min-expand=30 --param ggc-min-heapsize=4096 
+0

'ファイル/何を言ってmyprogram'ん)。? –

+0

これは次の出力です: 'myprogram:line 1:構文エラー:予期しない単語(expecting") ")' – OpenUser

答えて

0

まあ、それはこのように働いているようだ。

gcc -mabi=aapcs-linux mysource.c -o myprogram 
+0

私はIDAを使ってコンパイルしたプログラムを逆アセンブルし、それをネイティブのOpenWRTプログラムと比較しました(同じmvebu Arch ) – OpenUser

関連する問題