投入嵌入式Linux系統多年,在過程中總反反覆覆的需要將一些套件移植到不同的平台上去。通常是每次如果沒辦法簡單的 configure & make,就會上網去找參數怎麼下才能 make 成功。有時可以很快找到資料,有時要花一點時間…
終於終於,想說還是把它們記下來好了,不要再做這些白工了~~~東西還蠻雜的,比較常用到的還是那些大套件。
套件列表
收錄了下列的套件,在 Makefile 裡也有指定版本,確保可以編譯成功。當然,移植到不同平台上時,也會因為 compiler 或預設套件不一樣,需要做修修改改。
- libpcap: tcpdump 所依整的套件
- tcpdump: 抓包程式
- iperf: 網路速度測試程式
- sysstat: CPU使用率、效能程式
- iproute2: Routing table 設定程式
- lrzsz: ZModem 程式
- strace: Trace 程式呼叫的 syscall
- gdb: 就 gdb
- tar: 就 tar, busybox 的 tar 太陽春,只好重編
- samba: 網芳程式
- ethtool: 看網卡底層狀態
- atftp: TFTP 程式
- inetutils: 為了 build ifconfig. 好像還要抓 termcap 下來參照
- coreutils: 一些基礎的 Linux tool
- ncurses: 游標操作的 library
- vim: busybox vi 太簡單,自己編 vim 上 embedded Linux
- e2fsprogs: EXT2/3/4 檔案系統的程式
- mpg123: MP3 播放程式, 需要 ALSA library header
- php: 編 php
- fim: 冷門程式 frame buffer image viewer
- fbv: 冷門程式好像也是 frame buffer image viewer
- liblzf: LZF compress algorithm library
- python: 就 python
- zlib: ZLIB
- openssl: openssl
- dialog: Console 畫面下的一些問答視窗
- curl: 網頁抓取程式
Makefile 內容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 |
CC=$(CROSS)gcc AR=$(CROSS)ar LD=$(CROSS)ld CXX=$(CROSS)g++ HOST=arm-linux TARGET=arm-linux CWD=$(shell pwd) LIBPCAP_DIR=libpcap-1.7.3 TCPDUMP_DIR=tcpdump-4.7.4 IPERF_DIR=iperf-2.0.5 SYSSTAT_DIR=sysstat-master IPROUTE2_DIR=iproute2-3.1.0 LRZSZ_DIR=lrzsz-0.12.20 STRACE_DIR=strace-4.9 GDB_DIR=gdb-7.8 PROCSTAT_DIR=procstat-src TAR_DIR=tar-1.28/ SAMBA_DIR=samba-3.6.23 ETHTOOL_DIR=ethtool-3.18 ATFTP_DIR=atftp-0.7.1 INETUTILS=inetutils-1.9 COREUTILS=coreutils-8.23 NCURSES=ncurses-5.9 VIM=vim74 E2FSPROGS=e2fsprogs-1.42.13 MPG123=mpg123-0.60 PHP=php-5.6.19 FIM=fim-0.5-rc1 FBV=fbv-master LIBLZF=liblzf-3.6 PYTHON=python-2.7.14 ZLIB=zlib-1.2.11 OPENSSL=openssl-1.0.2n DIALOG=dialog-1.3-20171209 CURL=curl-7.61.0 #apps=curl dialog openssl openssl python liblzf fbv fim php mpg123 e2fsprogs vim ncurses coreutils inetutils atftp ethtool samba tar gdb libpcap tcpdump iperf sysstat iproute2 lrzsz strace procstat apps=curl all: $(apps) curl: if [ ! -f $(CURL)/curl ]; then \ cd $(CURL); \ ./configure --host=arm-linux --disable-shared --enable-static LDFLAGS="-static" CC=$(CC); \ make; \ fi dialog: if [ ! -f $(DIALOG)/dialog ]; then \ cd $(DIALOG); \ ./configure --host=arm-linux CC=$(CC) --with-ncurses CFLAGS="-I../$(NCURSES)/include -L../$(NCURSES)/lib -static"; \ make; \ fi openssl: if [ ! -f $(OPENSSL)/libssl.so.1.0.0 ]; then \ cd $(OPENSSL); \ export CC=$(CC);\ export LD=$(LD);\ ./Configure shared linux-armv4;\ make; \ fi zlib: if [ ! -f $(ZLIB)/lzf ]; then \ cd $(ZLIB); \ export CC=$(CC);\ ./configure; \ make; \ fi python: if [ ! -f $(PYTHON)/python ]; then \ cd $(PYTHON); \ -rm -rf python-2.7.14/Lib/test/; \ ./configure;\ make python Parser/pgen;\ mv python python_for_build;\ mv Parser/pgen Parser/pgen_for_build;\ make distclean;\ CONFIG_SITE=config.site ./configure --host=arm-linux --build=i586-linux-gnu --prefix=/ --disable-ipv6 --enable-optimizations\ CC=$(CC);\ make -j 4 CFLAGS="-g0 -O2";\ mkdir build_install;\ make install DESTDIR=`pwd`/build_install;\ fi liblzf: if [ ! -f $(LIBLZF)/lzf ]; then \ cd $(LIBLZF); \ ./configure --host=arm-linux CC=$(CC); \ make; \ fi fbv: cd $(FBV); \ ./configure --without-libjpeg --without-libpng; \ make CC=$(CC) CXX=$(CXX) ; fim: if [ ! -f $(FIM)/src/fim ]; then \ echo Need to manually compile b2ba as x86 and remove all regex.* in Makefile; \ sleep 3;\ cd $(FIM); \ ./configure --enable-static --disable-exif --disable-smartautocompletion --host=arm-linux CC=$(CC) CXX=$(CXX) --disable-readline; \ make; \ fi php: if [ ! -f $(PHP)/sapi/cli/php ]; then \ cd $(PHP); \ ./configure --enable-static --without-mysql --disable-all --host=arm-linux CC=$(CC); \ make; \ fi mpg123: if [ ! -f $(MPG123)/src/mpg123 ]; then \ cd $(MPG123); \ ./configure CC=$(CC) --host=arm-linux --with-audio=alsa --with-default-audio=alsa --with-optimization=3 CFLAGS="-I/home/ubuntu/alsa-build/include"; \ make; \ fi e2fsprogs: if [ ! -f $(E2FSPROGS)/misc/mke2fs ]; then \ cd $(E2FSPROGS); \ ./configure --host=arm-linux CC=$(CC) CXX=$(CXX) ; \ make; \ fi vim: # for some system. ./configure --host=arm-linux --build=arm-linux --with-tlib=ncurses CFLAGS="-static" if [ ! -f $(VIM)/src/vim ]; then \ cd $(VIM); \ ./configure --host=arm-linux --with-tlib=ncurses CFLAGS="-static" \ LDFLAGS="-L$(CWD)/$(NCURSES)/lib -static" \ CC=$(CC) CXX=$(CXX) \ ac_cv_sizeof_int=4 \ vim_cv_getcwd_broken=no \ vim_cv_memmove_handles_overlap=yes \ vim_cv_stat_ignores_slash=yes \ vim_cv_tgetent=zero \ vim_cv_terminfo=yes \ vim_cv_toupper_broken=no \ vim_cv_tty_group=world --enable-multibyte && make; \ fi ncurses: if [ ! -f $(NCURSES)/lib/libncurses.a ]; then \ cd $(NCURSES); \ ./configure --host=arm-linux CC=$(CC) CXX=$(CXX) CPPFLAGS="-P" --with-shared --with-termlib; \ make; \ fi coreutils: if [ ! -f $(COREUTILS)/src/chroot ]; then \ cd $(COREUTILS); \ ./configure --host=arm-linux CC=$(CC); \ make; \ fi inetutils: if [ ! -f $(INETUTILS)/ifconfig/ifconfig ]; then \ cd $(INETUTILS); \ ./configure --host=arm-linux CC=$(CC) CFLAGS=-I`pwd`/termcap-1.3.1; \ make; \ fi atftp: if [ ! -f $(ATFTP_DIR)/atftp ]; then \ cd $(ATFTP_DIR); \ ./configure --host=arm-linux CC=$(CC); \ make; \ fi ethtool: if [ ! -f $(ETHTOOL_DIR)/ethtool ]; then \ cd $(ETHTOOL_DIR); \ ./configure --host=arm-linux CC=$(CC); \ make; \ fi samba: if [ ! -f $(SAMBA_DIR)/source3/bin/smbd ]; then \ cd $(SAMBA_DIR)/source3; \ ./autogen.sh; \ ./configure --without-quotas --without-sys-quotas --without-krb5 --without-ldap --without-ads --disable-cups --enable-swat=no --with-winbind=no --target=arm-linux-gnueabi --host=arm-linux-gnueabi --prefix= --with-configdir=/etc samba_cv_CC_NEGATIVE_ENUM_VALUES=yes libreplace_cv_HAVE_GETADDRINFO=no ac_cv_file__proc_sys_kernel_core_pattern=yes CFLAGS=-Os CC=$(CC);\ make; \ fi; tar: if [ ! -f $(TAR_DIR)/src/tar ]; then \ cd $(TAR_DIR); \ ./configure --host=$(HOST) TARGET=$(TARGET) CC=$(CC) AR=$(AR) LD=$(LD); \ make; \ fi; gdb: if [ ! -f $(GDB_DIR)/gdb/gdb ]; then \ cd $(GDB_DIR); \ ./configure --host=$(HOST) TARGET=$(TARGET) CC=$(CC) AR=$(AR) LD=$(LD); \ make; \ fi; libpcap: if [ ! -f $(LIBPCAP_DIR)/libpcap.a ]; then \ cd $(LIBPCAP_DIR); \ ./configure --host=$(HOST) CC=$(CC) --with-pcap=linux; \ make; \ fi; tcpdump: if [ ! -f $(TCPDUMP_DIR)/tcpdump ]; then \ cd $(TCPDUMP_DIR); \ ./configure --host=$(HOST) CC=$(CC) -without-crypto --disable-smb CFLAGS=../$(LIBPCAP_DIR)/libpcap.a -static ; \ make;\ fi; iperf: if [ ! -f $(IPERF_DIR)/src/iperf ]; then \ cd $(IPERF_DIR) ;\ ./configure --host=$(HOST) CC=$(CC) CXX=$(CXX) ac_cv_func_malloc_0_nonnull=yes ;\ make; \ fi; sysstat: if [ ! -f $(SYSSTAT_DIR)/mpstat ]; then \ cd $(SYSSTAT_DIR) ;\ ./configure --host=$(HOST) CC=$(CC) CXX=$(CXX);\ make; \ fi; iproute2: if [ ! -f $(IPROUTE2_DIR)/ip/ip ]; then \ cd $(IPROUTE2_DIR) ;\ make GCC=$(CC) ;\ make; \ fi; lrzsz: if [ ! -f $(LRZSZ_DIR)/src/lrz ]; then \ cd $(LRZSZ_DIR) ;\ rm -f config.cache ;\ export CC=$(CC) && ./configure ;\ make; \ fi strace: if [ ! -f $(STRACE_DIR)/strace ]; then \ cd $(STRACE_DIR) ;\ ./configure --host=$(HOST) CC=$(CC) CXX=$(CXX);\ make; \ fi procstat: cd $(PROCSTAT_DIR) ;\ make CC=$(CC) clean: make -C $(LIBPCAP_DIR) clean make -C $(TCPDUMP_DIR) clean make -C $(IPERF_DIR) clean make -C $(SYSSTAT_DIR) clean make -C $(IPROUTE2_DIR) clean make -C $(LRZSZ_DIR) clean make -C $(STRACE_DIR) clean make -C $(GDB_DIR) clean make -C $(PROCSTAT_DIR) clean make -C $(NCURSE) distclean make -C $(VIM) distclean make -C $(LIBLZF) distclean |
附件
My opensource packages Makefile