2017年4月21日 星期五

測試SDK是否能在不同版本的Ubuntu使用(chroot)

使用chroot測試
  1. sudo apt-get install schroot debootstrap
  2. 增加下面描述至/etc/schroot/schroot.conf
    [xenial]
    description=Ubuntu Xenial (LTS)
    directory=/home/XXX/xenial
    users=XXX        //主體使用者名稱
    groups=XXX      //主體使用者群組
    root-groups=root
    aliases=unstable,default
  3. mkdir /home/XXX/xenial
  4. sudo debootstrap --variant=buildd --arch amd64 xenial /home/XXX/xenial http://archive.ubuntu.com/ubuntu/
    or
    sudo debootstrap --arch amd64 xenial /home/XXX/xenial http://archive.ubuntu.com/ubuntu/
  5. sudo mkdir /home/XXX/xenial/home/XXX
  6. schroot -c xenial -u XXX
  7. exit
  8. 安裝sudo and language
    sudo chroot /home/XXX/xenial
    apt-get install sudo
    export LANGUAGE=en_US.UTF-8
    export LANG=en_US.UTF-8
    export LC_ALL=en_US.UTF-8
    locale-gen en_US.UTF-8
    dpkg-reconfigure locales
    exit
  9. 增加user and group
    sudo chroot /home/XXX/xenial /bin/bash
    groupadd XXX
    useradd -g XXX XXX
    passwd XXX
    exit 
Ubuntu 10.04
sudo debootstrap --arch amd64 --keyring=/etc/apt/trusted.gpg lucid /home/victor/Workspace/hisilicon http://old-releases.ubuntu.com/ubuntu/

Bind Filesystem
/etc/fstab
/dev /home/XXX/xenial/dev auto bind 0 0
/dev/pts /home/XXX/xenial/dev/pts auto bind 0 0
/proc /home/XXX/xenial/proc auto bind 0 0

2017年3月9日 星期四

Compile出現error: incompatible types when assigning to type &int * from type &kuid_t * pOSFSInfo->fsuid = current_fsuid();錯誤

主要是新版linux kernel,current_fsuid() function有修改。

這function定義在
/usr/src/linux-headers-X.XX.X-XX/include/linux/cred.h
struct cred {
...
kuid_t fsuid;   /* UID for VFS ops */
kgid_t fsgid; /* GID for VFS ops */

/usr/src/linux-headers-3.19.0-32/include/linux/uidgid.h
typedef struct {
uid_t  val;
} kuid_t;

可依下面方式更改解決此問題。
os/linux/xxx_linux.c
pOSFSInfo->fsuid = current_fsuid().val;
pOSFSInfo->fsgid = current_fsgid().val;
或是

include/os/xxx_linux.h
typedef struct _OS_FS_INFO_
{
kuid_t                     fsuid;
  kgid_t                     fsgid;
  mm_segment_t      fs;
} OS_FS_INFO;

2017年3月8日 星期三

Compile出現arm-none-eabi-gcc: not found /bin/sh: 4:錯誤

一直以為這訊息是沒有找到這檔案,
但檔案明明有在 ><
查了Google後才知道並不是指檔案沒找到 Orz

原來是自己的Ubuntu是64位元版本,
而gcc是32位元版本,才出現這樣的錯誤訊息。

安裝ia32-libs就解決了 ...

判斷Linux執行檔為32-bit或64-bit



> file filename

2017年1月10日 星期二

VirtualBox發生Start tag expected, '<' not found錯誤

VirtualBox執行時顯示Start tag expected, '<' not found,
無法開啟VirtualBox。

刪除
C:\Users\account\.VirtualBox\VirtualBox.xml

C:\Users\victorlin.TWNB15035\.VirtualBox\VirtualBox.xml-prev
更名為
C:\Users\account\.VirtualBox\VirtualBox.xml

2016年7月18日 星期一

編譯原始碼錯誤



編譯原始碼錯誤,錯誤訊息又看不出什麼錯誤,

可確認gcc版本是否適合


Install & Config
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.X X
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.X X

sudo update-alternatives --config gcc
sudo update-alternatives --config g++

2016年6月7日 星期二

Linux Trace Source Code

vim + ctags + taglist + cscope有點麻煩
想找方便的工具,
安裝KDE後,發現Kate蠻方便的。

Kate有Projects及CTags Plugin支援。
搜尋Google後得知作法。

1. Settings > Configure Kate
2. 安裝CTags, Build and Project Plugin
3. 目前並無GUI可增加新專案,需手動增加
    a. 在專案的根目錄增加.kateproject檔案
    b. 可以filter檔案並增加build功能
    c.  檔案內容如下
    {
      "name": "Project Name",
      #使用絕對目錄
      "directory": "/home/user/project",
      "files": [ { "filters": ["*.c", "*.h", "*.mk"], "recursive": 1 } ],
      "build": {
        "directory": "/home/user/project",
        "build": "/home/user/project/build.sh project",
        "clean": "/home/user/project/build.sh clean"
      }
    }
4. 在專案底下隨便開啟檔案,就可以看到Project了。
    也可使用CTags與Build等等功能。