電腦資訊
Mac
1.X61 上安裝 MacOS
2.http://blog.roodo.com/lyahau/archives/11473485.html
Linux GCC編譯過程
目前Linux下最常用的C語言編譯器是GCC(GNU Compiler Collection),它是GNU項目中符合ANSI C標準的編譯系統,能夠編譯用C、C++和Object C等語言編寫的程序.GCC不僅功能非常強大,結構也異常靈活.最值得稱道的一點就是它可以通過不同的前端模塊來支持各種語言,如Java、Fortran、Pascal、Modula-3和Ada等.
Linux系統下的gcc(GNU C Compiler)是GNU推出的功能強大、性能優越的多平台編譯器,是GNU的代表作品之一。 gcc是可以在多種硬體平台上編譯出可執行程序的超級編譯器,其執行效率與一般的編譯器相比平均效率要高20%~30%。
使用GCC編譯程序時,編譯過程可以被細分為四個階段:
◆預處理(Pre-Processing)
◆編譯(Compiling)
◆彙編(Assembling)
◆鏈接(Linking)
.c為後綴的文件,C語言源代碼文件;
.a為後綴的文件,是由目標文件構成的檔案庫文件;
.C,.cc或.cxx為後綴的文件,是C++源代碼文件;
.h為後綴的文件,是程序所包含的頭文件;
.i為後綴的文件,是已經預處理過的C源代碼文件;
.ii為後綴的文件,是已經預處理過的C++源代碼文件;
.m為後綴的文件,是Objective-C源代碼文件;
.o為後綴的文件,是編譯後的目標文件;
.s為後綴的文件,是彙編語言源代碼文件;
.S為後綴的文件,是經過預編譯的彙編語言源代碼文件。
命令gcc首先調用cpp進行預處理,在預處理過程中,對源代碼文件中的文件包含(include)、預編譯語句(如宏定義define等)進行分析。接著調用cc1進行編譯,這個階段根據輸入文件生成以.o為後綴的目標文件。彙編過程是針對彙編語言的步驟,調用as進行工作,一般來講,.S為後綴的彙編語言源代碼文件和彙編、.s為後綴的彙編語言文件經過預編譯和彙編之後都生成以.o為後綴的目標文件。當所有的目標文件都生成之後,gcc就調用ld來完成最後的關鍵性工作,這個階段就是連接。在連接階段,所有的目標文件被安排在可執行程序中的恰當的位置,同時,該程序所調用到的庫函數也從各自所在的檔案庫中連到合適的地方。
例程1:hello.c
#include
int main(void)
{
printf (『Hello world, Linux programming!\n』);
return 0;
}
然後執行下面的命令編譯和運行這段程序:
# gcc hello.c -o hello
# ./hello
Hello world, Linux programming!
首先,GCC需要調用預處理程序cpp,由它負責展開在源文件中定義的宏,並向其中插入“#include”語句所包含的內容;接著,GCC會調用ccl和as將處理後的源代碼編譯成目標代碼;最後,GCC會調用鏈接程序ld,把生成的目標代碼鏈接成一個可執行程序.
◆預處理(Pre-Processing)
使用-E參數可以讓GCC在預處理結束後停止編譯過程:
# gcc -E hello.c -o hello.cpp
◆編譯(Compiling)
下一步是將hello.i編譯為目標代碼,這可以通過使用-c參數來完成:
# gcc -x cpp-output hello.cpp -o hello.o
或者
# gcc -c hello.cpp -o hello.o
◆彙編(Assembling)
◆鏈接(Linking)
# gcc hello.o -o hello
彙編應該調用as,這裡應該是一起完成了
gcc主要參數:
-o定義輸出文件
-E完成預處理/預編譯停止
-c只編譯生成.o,不連接
-x指定編譯步驟
-g gdb調試用,在可執行程序中包含標準調試信息
-O,O1,O2,O3,O4,O5優化級別
-w關閉所有警告
-Wall允許所有有用的警告
-DFOO=BAR定義預處理宏FOO的值為BAR
-IDIRNAME將DIRNAME加入到包含文件的搜索目錄中去
-LDIRNAME將DIRNAME加入到庫文件文件的搜索目錄中去
-static靜態鏈接庫
-lFOO動態連接庫,名為libFOO.o/libFOO.so(2.4/2.6)
-mcpu=CPU TYPE針對不同CPU作不同的優化,比如-m386,-mpentiumpro
Linux ELF
ELF Programming 教學文件
http://www.jollen.org/blog/2007/03/elf_program_loading_4_flow_chart.html
http://www.study-area.org/cyril/opentools/opentools/x869.html
ld :Link Editor 連結各obj寫進一個可執行檔(executable)。
ldd :秀出一個執行檔用了那些動態函式庫。
ld.so ynamic Linker, 動態連結的話,是由ld.so完成執行時期symbol的
:參照與連結。
ld-linux.so :ELF檔的動態連結,跟ld.so一樣。只是ld.so是給a.out format的。
:新的glicb2的ld-linux.so.2已經跟ld.so.2結合成單一程式了。
ldconfig :根據/etc/ld.so.conf內的目錄,做出動態連結所需的cache檔。
Ubuntu share folder
用舊電腦架了一台 Linux Ubuntu 9.10 當 Server
在 裝了第二顆硬碟後,每次開機都需要自己 Mount
而且都需要輸入密碼
解決方法:http://blog.xuite.net/chingwei/blog/28830641
sudo vi /usr/share/polkit-1/actions/org.freedesktop.devicekit.disks.policy
然後搜尋:
org.freedesktop.devicekit.disks.filesystem-mount-system-internal
(就在第二個 Section )
將 <allow_active>auth_admin_keep</allow_active> (參考上圖)
改成 <allow_active>yes</allow_active> (參考下圖)
接下來修改 /etc/fstab 讓開機時可以自動做 mount 的動作
當然有更好的方法就是安裝 pysdm (storage device manager)
接下來設定資料夾分享,應該會遇到 testparm 的問題
請安裝
apt-get install samba-common-bin
繼續設定分享,出現net usershare’ returned error 255: net usershare: cannot open usershare directory /va
可參考 http://ubuntuforums.org/showthread.php?t=825965
此時可直接安裝
sudo apt-get install system-config-samba
之後在 GNOME menu listing: System>Administration>Samba 設定分享目錄
完畢
how to download android source
1.android source code
reference
http://www.moko365.com/blog/%E5%A6%82%E4%BD%95%E4%B8%8B%E8%BC%89android%E5%8E%9F%E5%A7%8B%E7%A2%BC
2.download kernel branch
取得 Goldfish 的Kernel Source code, 目前是版本是 2.6.29
git clone git://android.git.kernel.org/kernel/common.git
~/gitrepos/mydroid/kernel/common$ git branch -a
* android-2.6.27
remotes/origin/HEAD -> origin/android-2.6.27
remotes/origin/android-2.6.25
remotes/origin/android-2.6.27
remotes/origin/android-2.6.29
remotes/origin/android-goldfish-2.6.27
remotes/origin/android-goldfish-2.6.29
kunyi@kunyi:~/gitrepos/mydroid/kernel/common$ git checkout origin/android-goldfish-2.6.29
Checking out files: 100% (17574/17574), done.
3.download android sdk
copy android-sdk-linux_86/tools to /home/ku/mydroid/out/host/linux-x86
4. Modify kernel Makefile
ARCH=arm
CROSS_COMPILE=../prebuilt/linux-x86/toolchain/arm-eabi-4.2.1/bin/arm-eabi-
5.Build kernel
make goldfish_defconfig
make
6.Finish
OBJCOPY arch/arm/boot/Image
Kernel: arch/arm/boot/Image is ready
AS arch/arm/boot/compressed/head.o
GZIP arch/arm/boot/compressed/piggy.gz
AS arch/arm/boot/compressed/piggy.o
CC arch/arm/boot/compressed/misc.o
LD arch/arm/boot/compressed/vmlinux
OBJCOPY arch/arm/boot/zImage
Kernel: arch/arm/boot/zImage is ready
Linux Driver Document
Kinux Usb Driver
http://free-electrons.com/doc/linux-usb.pdf
http://jserv.sayya.org/kernel/linux_device_driver_openlab.pdf
android emulator
monitor radio
adb logcat -b radio
Ubuntu use mobile at command
cu -l /dev/ttyACM0
Android 系統源代碼結構簡介
Google提供的Android包含了原始Android的目標機代碼,主機編譯工具、仿真環境,代碼包經過解壓縮後,第一級別的目錄和文件如下所示:
.
|– Makefile(全局的Makefile)
|– bionic(Bionic含義為仿生,這裡面是一些基礎的庫的源代碼)
|– bootloader(引導加載器)
|– build (build目錄中的內容不是目標所用的代碼,而是編譯和配置所需要的腳本和工具)
|– dalvik(JAVA虛擬機)
|– development (程序開發所需要的模板和工具)
|– external(目標機器使用的一些庫)
|– frameworks(應用程序的框架層)
|– hardware(與硬件相關的庫)
|– kernel(Linux2.6的源代碼)
|– packages(Android的各種應用程序)
|– prebuilt(Android在各種平台下編譯的預置腳本)
|– recovery(與目標的恢復功能相關)
`– system(Android的底層的一些庫)
bionic目錄展開一個級別的目錄如下所示:
bionic/
|– Android.mk
|– libc
|– libdl
|– libm
|– libstdc++
|– libthread_db
`– linker
bootloader目錄展開的兩個級別目錄:
bootloader/
`– legacy
|– Android.mk
|– README
|– arch_armv6
|– arch_msm7k
|– fastboot_protocol.txt
|– include
|– libboot
|– libc
|– nandwrite
`– usbloader
build目錄展開的一個級別的目錄如下所示:
build/
|– buildspec.mk.default
|– cleanspec.mk
|– core (各種以mk為結尾的文件,它門是編譯所需要的Makefile)
|– envsetup.sh
|– libs
|– target (包含board和product兩個目錄,為目標所需要文件)
`– tools(編譯過程中主機所需要的工具,一些需要經過編譯生成)
其中,core中的Makefile是整個Android編譯所需要的真正的Makefile,它被頂層目錄的Makefile引用。
envsetup.sh是一個在使用仿真器運行的時候,用於設置環境的腳本。
dalvik目錄用於提供Android JAVA應用程序運行的基礎————JAVA虛擬機。
development目錄展開的一個級別的目錄如下所示:
development
|– apps (Android應用程序的模板)
|– build(編譯腳本模板)
|– cmds
|– data
|– docs
|– emulator (仿真相關)
|– host (包含windows平台的一些工具)
|– [...]
VirtualBox 分享資料夾設定
VirtualBox 分享資料夾設定
1)確認已安裝VBoxGuestAdditionals
2)lsmod | grep vb 確認 vboxvfs 與 vboxadd 是否存在
3)進入 /etc 目錄, sudo gedit modules, 在最後加入 vboxvsf與vboxadd兩行
4)在終端機端打 sudo mount -t vboxsf temp /home/user/share
5)到 /home/user/share 目錄下即可看到與 windows share 的目錄
6)如果要開機後自動 mount 請再做以下動作
You’ll need to edit your fstab file, which is located in the /etc directory. But before you can do that, you’ll either need to be logged [...]
近期迴響