box編譯
1. mapbox怎麼編譯ios版本的
方法/步驟 從網上下載arm-linux-gcc 4.4.3的源碼 進入Linux的終端,將當前目錄設為arm-linux-gcc的下載目錄,輸入tar -xzf arm-linux-gcc-4.4.3.tar.gz,將文件解壓,解壓後會有一個opt的文件夾。 在/usr/local/下建立一個名為arm的文件夾,在終端中輸入命令:cd /usr/local/,回車,然後再輸入命令:mkdir arm,建立arm目錄,並修改該文件夾的屬性為rwx,輸入命令:chmod 777 arm 將之前解壓得到的opt文件壓下的源碼,復制到上一步中創建的arm文件夾下,在終端中輸入命令:sudo cp -r /opt/FriendlyARM/toolschain/4.4.3 /usr/local/arm 到這里已經基本安裝好了,到為了避免每次使用arm-linux-gcc時都要輸入它所在的完整路徑,所以這里我們要修改一下環境變數$PATH。在終端中輸入:sudo gedit /etc/profile,打開profile文件,在最後一行加上「export PATH=$PATH:/usr/local/arm/4.4.3/bin」然後保存文件。 立即使新的環境變數生效,輸入:source /etc/profile。再輸入:echo $PATH查看環境變數,如圖。如果不成功,則直接重新啟動系統,再查看。因為之前我已經安裝過了,為了演示,所以圖中會有兩個/usr/local/arm/4.4.3/bin。 最後檢查是否安裝完成,輸入:arm-linux-gcc -v查看版本信息,如果出現以下信息,則說明安裝成功。
2. busybox編譯錯誤
上面不是說的很清楚么, 沒有文件:applets/.applets.o.d 可以看一下有沒有 applets 目錄及其下面有沒有.applets.o.d 這個隱藏文件
3. 編譯busybox
現在說明的是 gzip、bzip2、tar工具(要求目標板能解壓縮tar.bz2和tar.gz文件)。
如果你做的文件系統不需要使用這個功能, 那麼就可以在配置時不使用此項功能
現在你說明的是包含啦GZIP 自認就可以不必安裝啦
4. 怎樣使busybox編譯出ldconfig命令
BusyBox 命令中支持的選項
BusyBox 中的命令並不支持所有可用選項,不過這些命令都包含了常用的選項。如果我們需要知道一個命令可以支持哪些選項,可以使用 --help 選項來調用這個命令,如清單 12 所示。
清單 12. 使用 --help 選項調用命令
$ ./busybox wc --help
BusyBox v1.1.1 (2006.04.09-15:27+0000) multi-call binary
Usage: wc [OPTION]... [FILE]...
Print line, word, and byte counts for each FILE, and a total line if
more than one FILE is specified. With no FILE, read standard input.
Options:
-c print the byte counts
-l print the newline counts
-L print the length of the longest line
-w print the word counts
$
這些特定的數據只有在啟用了 CONFIG_FEATURE_VERBOSE_USAGE 選項時才可以使用。如果沒有這個選項,我們就無法獲得這些詳細數據,但是這樣可以節省大約 13 KB 的空間。
向 BusyBox 中添加新命令
向 BusyBox 添加一個新命令非常簡單,這是因為它具有良好定義的體系結構。第一個步驟是為新命令的源代碼選擇一個位置。我們要根據命令的類型(網路,shell 等)來選擇位置,並與其他命令保持一致。這一點非常重要,因為這個新命令最終會在 menuconfig 的配置菜單中出現(在下面的例子中,是 Miscellaneous Utilities 菜單)。
對於這個例子來說,我將這個新命令稱為 newcmd,並將它放到了 ./miscutils 目錄中。這個新命令的源代碼如清單 13 所示。
清單 13. 集成到 BusyBox 中的新命令的源代碼
#include "busybox.h"
int newcmd_main( int argc, char *argv[] )
{
int i;
printf("newcmd called:\n");
for (i = 0 ; i < argc ; i++) {
printf("arg[%d] = %s\n", i, argv[i]);
}
return 0;
}
接下來,我們要將這個新命令的源代碼添加到所選子目錄中的 Makefile.in 中。在本例中,我更新了 ./miscutils/Makefile.in 文件。請按照字母順序來添加新命令,以便維持與現有命令的一致性:
清單 14. 將命令添加到 Makefile.in 中
MISCUTILS-$(CONFIG_MT) += mt.o
MISCUTILS-$(CONFIG_NEWCMD) += newcmd.o
MISCUTILS-$(CONFIG_RUNLEVEL) += runlevel.o
接下來再次更新 ./miscutils 目錄中的配置文件,以便讓新命令在配置過程中是可見的。這個文件名為 Config.in,新命令是按照字母順序添加的:
清單 15. 將命令添加到 Config.in 中
config CONFIG_NEWCMD
bool "newcmd"
default n
help
newcmd is a new test command.
這個結構定義了一個新配置項(通過 config 關鍵字)以及一個配置選項(CONFIG_NEWCMD)。新命令可以啟用,也可以禁用,因此我們對配置的菜單屬性使用了 bool (Boolean)值。這個命令默認是禁用的(n 表示 No),我們可以最後放上一個簡短的 Help 描述。在源代碼樹的 ./scripts/config/Kconfig-language.txt 文件中,我們可以看到配置語法的完整文法。
接下來需要更新 ./include/applets.h 文件,使其包含這個新命令。將下面這行內容添加到這個文件中,記住要按照字母順序。維護這個次序非常重要,否則我們的命令就會找不到。
清單 16. 將命令添加到 applets.h 中
USE_NEWCMD(APPLET(newcmd, newcmd_main, _BB_DIR_USER_BIN, _BB_SUID_NEVER))
這定義了命令名(newcmd),它在 Busybox 源代碼中的函數名(newcmd_main),應該在哪裡會為這個新命令創建鏈接(在這種情況中,它在 /usr/bin 目錄中),最後這個命令是否有權設置用戶 id(在本例中是 no)。
倒數第二個步驟是向 ./include/usage.h 文件中添加詳細的幫助信息。正如您可以從這個文件的例子中看到的一樣,使用信息可能非常詳細。在本例中,我只添加了一點信息,這樣就可以編譯這個新命令了:
清單 17. 向 usage.h 添加幫助信息
#define newcmd_trivial_usage "None"
#define newcmd_full_usage "None"
最後一個步驟是啟用新命令(通過 make menuconfig,然後在 Miscellaneous Utilities 菜單中啟用這個選項)然後使用 make 來編譯 BusyBox。
使用新的 BusyBox,我們可以對這個新命令進行測試,如清單 18 所示。
清單 18. 測試新命令
$ ./busybox newcmd arg1
newcmd called:
arg[0] = newcmd
arg[1] = arg1
$ ./busybox newcmd --help
BusyBox v1.1.1 (2006.04.12-13:47+0000) multi-call binary
Usage: newcmd None
None
就是這樣!BusyBox 開發人員開發了一個優秀但非常容易擴展的工具。
結束語
BusyBox 是為構建內存有限的嵌入式系統和基於軟盤系統的一個優秀工具。BusyBox 通過將很多必需的工具放入一個可執行程序,並讓它們可以共享代碼中相同的部分,從而對它們的大小進行了很大程度的縮減,BusyBox 對於嵌入式系統來說是一個非常有用的工具,因此值得我們花一些時間進行探索。
上文網上轉載!
1.USE_NEWCMD(APPLET(newcmd, newcmd_main, _BB_DIR_USER_BIN, _BB_SUID_NEVER))
此語句,在編譯的時候會報出 USE_NEWCMD 未定義!
故使用源碼中的類似語句 APPLET(newcmd, newcmd_main, _BB_DIR_USER_BIN, _BB_SUID_NEVER) 替代之,編譯通過
2.但是 在此時測試命令的時候並沒有得到上文給出的結果,而是提示:
"#./busybox newcmd
newcmd: applet not found "
和
「
# ./newcmd 11
11: applet not found
5. openbox的編譯安裝
一般發行版有特定的軟體包生成方式,以下是官方網站簡介
依賴軟體:
1, C compiler (such as GCC)
2, Libc library and headers (development package)
3,Xlib library and headers (development package)
4, Xext and Xrandr library and headers (development package) - optional but recommended
5, Glib-2 library and headers (development package)
6, LibXML-2 library and headers (development package)
7, Pango library and headers (development package)
8, Imlib2 (development package) - optional but recommended
9, Startup-notification library and headers (development package) - optional but recommended
10, XCursor library and headers (development package) - optional but recommended
11, Pkg-config
源碼可以官方網站下載tar壓縮包或者從git代碼庫中復制,解壓後編譯安裝步驟
./configure --prefix=/usr --sysconfdir=/etc
make ...openbox
make install
對於64位發行版,一般要添加--libdir=/usr/lib64編譯選項
6. Virtual Box編譯時候出錯,求解答
scanf("%d",&a); 取地址符號漏了。 有些編譯器寫成 scanf_s("%d",&a); 其他問題不清楚,也許是有中文路徑,也許是工程建錯了。
7. 在編譯busybox的時候 ,,make 出錯
我也遇到過同樣的問題,不知道是不是和你是同樣的問題,雖然時間很長了,還是把它貼出來,看能不能幫助到別人。這個應該是make版本太老的問題,我下了個3.8.2版本的make,就不再出現make: *** No rule to make target `|', needed by `include/autoconf.h'. Stop.提示。順便說一下,解決問題的思路,| 代表order-only依賴,將此符號去掉,重新編譯,就正常,因此估計是make版本太老。
8. 如何編譯Busybox
BusyBox 命令中支持的選項 BusyBox 中的命令並不支持所有可用選項,不過這些命令都包含了常用的選項。如果我們需要知道一個命令可以支持哪些選項,可以使用 --help 選項來調用這個命令,如清單 12 所示。 清單 12. 使用 --help 選項調用命令
9. 新手box虛擬機如何編譯vboxdrv內核
先啟動開發機。然後啟動目標機,開機時按Esc建選擇有kgdb的內核啟動,等待一下後啟動過程會暫停並提示等待遠程gdb調試,這時切換到開發機並進入到源碼目錄下,運行
gdb ./vmlinux
gdb啟動後,使用以下命令設置波特率和調試終端:
(gdb)set remotebaud 115200
(gdb)target remote /dev/ttyS0
10. 如何使用busybox編譯和生成最簡lin
在ubuntu系統下創建一個rootfs目錄,用於存放busybox生成的根文件系統,也可設置為nfs的掛載目錄,直接通過網路文件系統進行掛載,便於開發。我自己就將該目錄創建在/opt/FriendlyARM/mini2440/rootfs處。並在該目錄下創建一些必備的子目錄:
leon@Ubuntu:/opt/FriendlyARM/mini2440/rootfs$ mkdir bin dev etc proc sbin sys tmp usr leon@Ubuntu:/opt/FriendlyARM/mini2440/rootfs$ ls bin dev etc proc sbin sys tmp usr
1、修改Makefile配置
進入busybox目錄,修改Makefile文件,在文件頭處加入內容如下:
ARCH ?= arm CROSS_COMPILE ?= arm-linux-
2、修改配置文件
make menuconfig
選擇Busybox Settings—>
1、Build Options—>,選擇[*] Build Busybox as a static binary(no shared libs); 2、Installtion Options,在busybox instantlltionprefix一欄中,輸入你想要創建rootfs的目錄。比如我的是/opt/FriendlyARM/mini2440/rootfs。
保存,退出。
3、編譯源碼
輸入make,進行編譯;這其中估計會遇到一些錯誤,可參見我的另外一篇博客(linux(ubuntu)編譯busybox遇到的問題處理辦法)。編譯成功後,會給出以下提示:
LINK busybox_unstripped Static linking against glibc, can't use --gc-sections Trying libraries: crypt m Library crypt is not needed, excluding it Library m is needed, can't exclude it (yet) Final link with: m DOC busybox.pod DOC BusyBox.txt DOC busybox.1 DOC BusyBox.html
編譯通過之後,輸入make install命令進行安裝,busybox會自動將rootfs根文件系統安裝到之前設置的目錄下。