2014年12月23日 星期二

ld: warning: cannot find entry symbol _start;

如題,今天compile一個東西,只想compile他的lib而不是整個daemon,

所以就下了 make XXXlib 這樣的指令,

實際執行起來大概像是  /usr/bin/ld hello.c -o hello.o 這樣的東西

就跑出了如標題這樣的錯誤,雖然只是一個warning 但是根本可以看做一個error,因為位置

根本全部都錯亂,所以下面一定跑出一堆undefined reference,

研究了許久

終於發現要在後面加上 -lc



/usr/bin/ld hello.c -o hello.o -lc

-lc 代表要跟compiler 說使用標準的C 函式庫

這樣終於可以過了 -.-


2014年12月15日 星期一

C++中函式輸入泛型並型態轉換為enum / In C++ function generic parameter casting to enum / casting void* to enum


在C++中不能直接cast成 enum 但在C 中可以
如以下source code 在C中可以COMPILE過 
情況類似此篇文章 typdef enum void* 的用法請益

typedef enum {
     enum1
     enum2,
     enum3}
myenum;
void myfunc(void *data)
{
    if((myenum)data==enum1)
      ...
    else if ((myenum)data==enum2)
     ...
    else
     ...
}

2014年10月28日 星期二

[LuaDec51] Compile for Ubuntu

首先先到  luadec的網站下載Luadec51的source code : http://files.luaforge.net/releases/
之後再把lua5.1版本的source code下載下來 :  http://www.lua.org/versions.html



由於luadec51會用到Lua51的LIB   (liblua.a    and  liblualib.a)
所以先進到lua5.1的資料夾中去把 Lua compile起來,
$> cd lua5.1...
$> make all

則 liblua.a   and liblualib.a 在  luadec51/src  中可以找到

之後只要自己寫個Makefile指向這兩個lib就可以compile成功並執行囉

如果對於如何寫一個Makefile有問題可以留言在底下。