brook@vista:~/protobuf$ git clone git://github.com/google/protobuf.git Cloning into 'protobuf'... ... brook@vista:~/protobuf/protobuf$ git checkout 3.6.x Branch 3.6.x set up to track remote branch 3.6.x from origin. ... brook@vista:~/protobuf/protobuf$ . /opt/oecore-x86_64/environment-setup-cortexa7-neon-vfpv4-oe-linux-gnueabi brook@vista:~/protobuf/protobuf$ vim configure.ac export CFLAGS export CXXFLAGS ### remove below line ### AC_CONFIG_SUBDIRS([third_party/googletest]) brook@vista:~/home6t/protobuf/protobuf$ ./autogen.sh + mkdir -p third_party/googletest/m4 + autoreconf -f -i -Wall,no-obsolete ... brook@vista:~/protobuf/protobuf$ ./configure ${CONFIGURE_FLAGS} --prefix=/home/brook/protobuf/ configure: loading site script /opt/oecore-x86_64/site-config-cortexa7-neon-vfpv4-oe-linux-gnueabi checking whether to enable maintainer-specific portions of Makefiles... yes checking build system type... x86_64-pc-linux-gnu ... brook@vista:~/protobuf/protobuf$ make all -j 8 make all-recursive Making install in . make[1]: Entering directory '/home/brook/protobuf/protobuf' ... brook@vista:~/protobuf/protobuf$ make install Making install in . make[1]: Entering directory '/home/brook/protobuf/protobuf' ... change "/home/brook/protobuf/lib/libprotoc.la" from # Libraries that this one depends upon. dependency_libs=' =/home6t/brook/protobuf/lib/libprotobuf.la =/usr/lib/libstdc++.la' to # Libraries that this one depends upon. dependency_libs='' brook@vista:~$ mkdir protobuf-c brook@vista:~$ cd protobuf-c brook@vista:~/protobuf-c$ git clone git://github.com/protobuf-c/protobuf-c.git Cloning into 'protobuf-c'... remote: Enumerating objects: 59, done. remote: Counting objects: 100% (59/59), done. ... brook@vista:~/protobuf-c/protobuf-c$ ./autogen.sh autoreconf: Entering directory `.' autoreconf: configure.ac: not using Gettext ... brook@vista:~/protobuf-c/protobuf-c$ PROTOC=/usr/bin/protoc-c protobuf_CFLAGS="-I/home/brook/protobuf/include" protobuf_LIBS="-L/home/brook/protobuf/lib" ./configure ${CONFIGURE_FLAGS} --prefix=/home/brook/protobuf-c configure: loading site script /opt/oecore-x86_64/site-config-cortexa7-neon-vfpv4-oe-linux-gnueabi checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes ... brook@vista:~/protobuf-c/protobuf-c$ make -j 8 make all-am make[1]: Entering directory '/home/brook/protobuf-c/protobuf-c' CC protobuf-c/protobuf-c.lo ...
2019年7月7日 星期日
Using openembedded SDK to build protobuf-c
2019年6月23日 星期日
Build the Linux Kernel and Busybox for ARM and run them on QEMU
安裝corss-compiler brook@vista:~/qemu$ wget http://releases.linaro.org/components/toolchain/binaries/7.4-2019.02/arm-linux-gnueabihf/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz brook@vista:~/qemu$ tar xvf gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz brook@vista:~/qemu$ sudo mv gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf /opt/ 編譯kernel brook@vista:~/qemu$ cd linux-arm brook@vista:~/qemu/linux-arm$ export ARCH=arm brook@vista:~/qemu/linux-arm$ export CROSS_COMPILE=arm-linux-gnueabihf- brook@vista:~/qemu/linux-arm$ export PATH=/opt/gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf/bin:$PATH brook@vista:~/qemu/linux-arm$ make vexpress_defconfig brook@vista:~/qemu/linux-arm$ make -j8 編譯busybox brook@vista:~/qemu/busybox$ export ARCH=arm brook@vista:~/qemu/busybox$ export CROSS_COMPILE=arm-linux-gnueabihf- brook@vista:~/qemu/busybox$ make O=/home/brook/qemu/busybox-build menuconfig --> change to static busybox brook@vista:~/qemu/busybox$ cd ../busybox-build brook@vista:~/qemu/busybox-build$ make -j8 brook@vista:~/qemu/busybox-build$ cp busybox ../initrd-arm/bin/busybox generate initrd-image brook@vista:~/qemu$ ./linux-arm/usr/gen_initramfs_list.sh -d initrd-arm > /tmp/brook_initramfs_list brook@vista:~/qemu$ ./linux-arm/usr/gen_init_cpio /tmp/brook_initramfs_list > initrd-arm.img 執行QEMU brook@vista:~/qemu$ /usr/local/bin/qemu-system-arm -M vexpress-a9 -m 512M -kernel ./linux-arm/arch/arm/boot/zImage -dtb ./linux-arm/arch/arm/boot/dts/vexpress-v2p-ca9.dtb -initrd ./initrd-arm.img -nographic -append "console=ttyAMA0"
-
參考資料:
- http://albert-oma.blogspot.com/2017/12/qemu-arm-linux.html, [QEMU] 模擬一個實際的 ARM Linux 嵌入式系統
- https://www.centennialsoftwaresolutions.com/blog/build-the-linux-kernel-and-busybox-for-arm-and-run-them-on-qemu, Build the Linux Kernel and Busybox for ARM and run them on QEMU
2019年6月15日 星期六
Build QEMU 4 on ubuntu 16.04
brook@vista$ ./configure --target-list="arm-softmmu,i386-softmmu,x86_64-softmmu,arm-linux-user,i386-linux-user,x86_64-linux-user" --enable-debug --enable-sdl --enable-kvm --enable-curl --enable-snappy --enable-tools ERROR: User requested feature sdl configure was not able to find it. Install SDL2-devel brook@vista$ sudo apt-get install libsdl2-2.0-0 brook@vista$ ./configure --target-list="arm-softmmu,i386-softmmu,x86_64-softmmu,arm-linux-user,i386-linux-user,x86_64-linux-user" --enable-debug --enable-sdl --enable-kvm --enable-curl --enable-snappy --enable-tools Install prefix /usr/local BIOS directory /usr/local/share/qemu firmware path /usr/local/share/qemu-firmware binary directory /usr/local/bin library directory /usr/local/lib module directory /usr/local/lib/qemu libexec directory /usr/local/libexec include directory /usr/local/include config directory /usr/local/etc local state directory /usr/local/var Manual directory /usr/local/share/man ELF interp prefix /usr/gnemul/qemu-%M Source path /home/brook/qemu4/qemu-4.0.0-rc4 GIT binary git GIT submodules C compiler cc Host C compiler cc C++ compiler c++ Objective-C compiler cc ARFLAGS rv CFLAGS -g ... module support no host CPU x86_64 host big endian no target list arm-softmmu i386-softmmu x86_64-softmmu arm-linux-user i386-linux-user x86_64-linux-user gprof enabled no sparse enabled no strip binaries no profiler no static build no SDL support yes (2.0.4) SDL image support no GTK support no GTK GL support no VTE support no TLS priority NORMAL GNUTLS support no libgcrypt no nettle no libtasn1 no PAM no iconv support yes curses support yes virgl support no curl support yes mingw32 support no Audio drivers pa oss Block whitelist (rw) Block whitelist (ro) VirtFS support no Multipath support no VNC support yes VNC SASL support no VNC JPEG support yes VNC PNG support yes xen support no brlapi support no bluez support no Documentation no PIE yes vde support no netmap support no Linux AIO support no ATTR/XATTR support yes Install blobs yes KVM support yes HAX support no HVF support no WHPX support no TCG support yes TCG debug enabled yes TCG interpreter no malloc trim support yes RDMA support no PVRDMA support no fdt support git membarrier no preadv support yes fdatasync yes madvise yes posix_madvise yes posix_memalign yes libcap-ng support no vhost-net support yes vhost-crypto support yes vhost-scsi support yes vhost-vsock support yes vhost-user support yes Trace backends log spice support no rbd support no xfsctl support no smartcard support no libusb no usb net redir no OpenGL support no OpenGL dmabufs no libiscsi support no libnfs support no build guest agent yes QGA VSS support no QGA w32 disk info no QGA MSI support no seccomp support no coroutine backend ucontext coroutine pool yes debug stack usage no mutex debugging yes crypto afalg no GlusterFS support no gcov gcov gcov enabled no TPM support yes libssh2 support no TPM passthrough TPM emulator QOM debugging yes Live block migration yes lzo support no snappy support yes bzip2 support no lzfse support no NUMA host support no libxml2 no tcmalloc support no jemalloc support no avx2 optimization yes replication support yes VxHS block device no bochs support yes cloop support yes dmg support yes qcow v1 support yes vdi support yes vvfat support yes qed support yes parallels support yes sheepdog support yes capstone internal docker yes libpmem support no libudev yes default devices yes brook@vista$ make all GEN arm-softmmu/config-devices.mak.tmp GEN arm-softmmu/config-devices.mak GEN i386-softmmu/config-devices.mak.tmp ... brook@vista$ sudo make all install [sudo] password for brook: make[1]: Entering directory '/home/brook/qemu4/qemu-4.0.0-rc4/slirp' brook@vista$ /usr/local/bin/qemu-system-x86_64 -kernel linux/arch/x86/boot/bzImage -initrd initrd.img -curses
-
參考資料:
- https://blog.csdn.net/candcplusplus/article/details/78320602, QEMU 2.10.1 编译安装
訂閱:
文章 (Atom)
熱門文章
-
轉自 http://www.wretch.cc/blog/redsonoma/14021073 基本概念: 1> tty(終端設備的統稱): tty一詞源於Teletypes,或者teletypewriters,原來指的是電傳打字機,是通過串行線用打印機鍵盤通過閱...
-
Work queue提供一個interface,讓使用者輕易的建立kernel thread並且將work綁在這個kernel thread上面,如下圖[1]所示。 由於work queue是建立一個kernel thread來執行,所以是在process context...
-
(V)將介紹file operations中的ioctl。ioctl的prototype為: int (*ioctl) (struct inode *inode, struct file *filp, unsigned int cmd, unsigned long arg); ...
-
這兩天電腦的word忽然都不能存檔,即便是另存新檔也不行,最後都只能放棄修改檔案,即便重新安裝過或者更新成2007也都不能存檔,最後就乖乖的google一下,原來是暫存的資料夾不存在,按照以下方式就可以解決了。 資料來源: word 2003不能存檔問題 編輯機碼的(reg...
-
System Call在HW和user space提供一層抽象層,主要目的有: 為user space提供硬體抽象層。比如,讀取檔案時,不用管檔案所在的媒體類型與檔案儲存類型。 System call能確保系統的安全與穩定。避免user space的無意或惡意的破壞。 ...
-
在kernel中建立thread可以使用kthread_create(),建立一個task,然後在調用wake_up_process(task)讓task真正的運行,如果要kill一個kthread可以使用kthread_stop()。 在kernel中,將kthread_cr...
-
Linux module練習手札I紀錄如何撰寫一個簡單的module,並且編輯它,以及load和unload一個module。 write a module #include <linux/init.h> #include <linux/module.h...
-
幾乎任何使用 TCP,UDP或UNIX-domain socket的動作都可以用nc來達成,常見的功能如。 simple TCP proxies shell-script based HTTP clients and servers network daemon testi...
-
很多人心中都有過一個問題 What is the difference between Platform driver and normal device driver? ,簡單的來說Platform devices就non-discoverable,也就是device本身沒辦法...
-
組成元件 要能正確顯示資料,必須包含資料倉儲(Store),資料欄位的定義(ColumnModel)。 首先我們先定義資料欄位: var cm = new Ext.grid.ColumnModel({ {header: 'Name', dataIndex...