移植Lua到ARM平臺

2020-12-23 電子產品世界

Lua是一門很小巧的語言,為保證良好的可移植性,Lua使用ANSI C編寫。因此Lua的移植灰常簡單,只需要使用正確的交叉編譯器就好了。

本文介紹如何將Lua移植到ARM平臺,分x個步驟,並使用如下環境:

本文引用地址:http://www.eepw.com.cn/article/201611/317673.htm

1. 作業系統:Ubunt10.04

2. 交叉編譯器:arm-linux-gcc 4.3.2版本(如果你不知道怎麼搭建交叉編譯環境,可以參考我的另一篇文章:http://hi.baidu.com/hqwfreefly/blog/item/8364fed7b3f58dc950da4b5f.html)

3.Lua5.1版本源碼

移植步驟:

1下載Lua原始碼:http://www.lua.org/versions.html#5.1/

2 解壓並進入目錄,如圖:

3修改並保存Makefile文件(共兩處):第一處:第8行PLAT= none修改為PLAT= ansi

第二處:第10行CC= gcc 修改為CC= arm-linux-gcc

4執行make命令,如圖:

生成很多.o庫文件,一個lua可執行文件(解釋器)和一個luac可執行文件(編譯器,產生中間代碼)。

5如果不打算在你的ARM開發板上使用那些庫而只是想運行Lua腳本,則只需要將lua文件複製到開發板即可。寫個簡單的腳本試試吧:

--[測試腳本: test.lua--]

Animal =

{

name = "Tom",

eat = function(self, food)

food = food or "unknown food"

print("My name is " .. self.name .. "\nI eat " .. food)

end,

}

Animal:eat("fish")

執行:./lua test.lua

結果:【筆者紙上談兵,沒得板子,感興趣的童鞋幫忙試下~.~】


相關焦點

  • OpenCV ffmpeg移植到ARM平臺
    前一篇寫了如何在移植OpenCV庫到ARM平臺上,本來我只是用到OpenCV的打開USB攝像頭獲取圖像到IplImage結構中,這用到了V4L2的底層函數。然後進行視頻圖像的幀處理。那麼如何用OpenCV讀寫ARM板上的視頻文件,並進行視頻處理呢?這該又將如何移植呢?
  • OpenCV在ARM上的移植 錯誤總結
    會出現如下錯誤: /usr/local/lib/libopencv_calib3d.so: error adding symbols: 文件格式錯誤 collect2: error: ld returned 1 exit status 原因是libopencv_calib3d.so不再是Linux下配置的opencv文件 而是arm
  • linux內核移植-移植2.6.35.4內核到s3c2440
    硬體平臺:FL2440主機平臺:Ubuntu 11.04交叉編譯器:arm-linux-gcc 4.3.2原創作品,轉載請標明出處http://blog.csdn.net/yming0221/article/details/6604616
  • 淺談分析Arm linux 內核移植及系統初始化的過程二
    Resource定義的實例將被添加到platform_device結構體對象中去。structplatform_device{constchar *name;u32 id;structdevice dev;u32 num_resources;structresource *resource;};Platform_device結構體包括結構體的名稱、ID號、平臺相關的信息、設備的數目以及上面定義的resource信息。
  • 【Lua篇】《Lua程序設計》全書知識萬字總結!
    這是關於lua編程最權威的書籍之一。推薦給lua基礎不夠牢的童鞋。沒有看過的可以通過我這篇文章快速瀏覽書中內容,已經看過的可以也能藉助這篇文章複習一遍。另外由於我之前是使用c#的,所以這篇文章也會提到c#和lua的一些不同點。全書內容分為4個部分:第1章到第10章,講了基礎數據類型、函數、閉包、協程、錯誤處理。
  • gcc、arm-linux-gcc和arm-elf-gcc的關係?
    uC -libc是最早為uClinux開發的庫,是Jeff Dionne和Kenneth Albanowski為在EKLs項目中支持m68000在Linux-8086 C庫源碼上移植的。uC-libc是一個完全的libc實現,但其中有一些api是非標準的,有些libc的標準也沒有實現。uC-libc穩定地支持 m68000,ColdFire和沒有MMU的ARM。
  • 國內大講堂-Lua培訓(上篇)
    本次Lua培訓分上下篇,結合Openresty框架,帶領大家從入門上手到能夠動手實戰開發。安全系統:基於WebServer層,做安全入侵檢測;對比C語言的好處就是動態加載,可按需修改(如WAF封禁)Web Api:用Lua實現CGI應用腳本;高效快捷(如核心業務接口)遊戲開發:遊戲的服務端邏輯,修改簡單,避免版本更新(魔獸世界等)目前平臺上的WAF架構簡圖
  • Lua API深入分析(一)
    還有兩個棧操作函數lua_pushvalue、lua_insert,將棧頂元素移動到其它位置。出棧出棧函數從lua棧頂彈出一定數量元素,函數只有lua_pop。函數導入與調用:C/C++函數導入到lua C/C++中的函數可通過lua_pushcfunction函數導入到lua中。
  • Konqueror/embedded向ARM-Linux平臺的移植和漢化
    但是由於該瀏覽器是自由軟體,因此向具體嵌入式平臺移植時存在一定的難度。本文主要介紹了Konqueror/embedded向ARM-Linux平臺上的整個移植和漢化過程,以便工程師參考和使用。圖1 Konqueror/embedded層次結構Kparts及Qt構件實現GUI  為了方便地實現將現有應用作為一個控制項插入到另外一個應用中去
  • dlua 0.1 發布,gdb 風格的 lua 調試器
    dlua 是一個類似 gdb 的 lua 調試器。
  • Lua_Real_Programming
    當使用loadfile加載上述兩個文件時,加載foo1.lua後foo函數是沒有被定義,需要執行之後才可使用,而foo2.lua被加載後foo可直接使用,如下:可以使用pcall在lua代碼內部處理錯誤,不過使用pcall是看不到traceback的,因為其在返回錯誤代碼時就已經銷毀了調用棧。
  • redis源碼學習之lua執行原理
    腳本的原理」「這個,這個,不就是那麼執行的嗎,eval 一段lua腳本就行了」「好的,了解了,今天面試先到這個吧,後續有消息會通知你」「好的,祝您生活愉快」面試場景純屬娛樂,但這個面試題確實是筆者真實遇到過的,今天我們就來看看redis執行lua腳本的原理,希望通過本篇學習可以解決心中的困惑,更深層次的講可以了解到兩種不同語言溝通的一點思想,我覺得這個是最寶貴的。
  • 飛凌課堂丨開發板Python 移植教程
    那麼如何在開發板上移植Python呢?我們現在以FET4418-C/FET6818-C為例,來給大家介紹下具體實施方法。Python 移植教程準備文件Python-2.7.13.tgzsqlite-autoconf-3200100.tar.gzPython-2.7.13-xcompile.patch.tar.gz
  • Nginx與Lua的執行順序和步驟說明
    satisfy all(與關係),satisfy any(或關係)9、try-files配置項try_files處理階段;專門用於實現標準配置指令try_files的功能,如果前 N-1 個參數所對應的文件系統對象都不存在,try-files 階段就會立即發起「內部跳轉」到最後一個參數(即第 N 個參數)所指定的URI.
  • 我們能用lua做什麼
    lua是一個巴西人設計的小巧的腳本語言,它的設計目的是為了能夠嵌入到應用程式中,從而為應用程式提供靈活的擴展和定製功能。
  • Lua 5.3.0 (beta) 發布
    Lua 5.3.0 (beta) 發布,此版本現已提供測試:http://www.lua.org/work/lua-5.3.0-
  • LTUI v1.7 發布,一個基於 Lua 的跨平臺字符終端 UI 界面庫
    安裝使用如果要運行自帶的測試,你需要先安裝lua或者luajit程序去加載運行ltui源碼倉庫中的測試程序:$ lua tests/dialog.lua$ lua tests/window.lua$ lua tests/desktop.lua$ lua tests/inputdialog.lua$ lua tests/mconfdialog.lua
  • 觸動精靈,觸摸精靈-lua腳本入門
    觸動精靈,觸摸精靈最近比較火,可是沒有lua腳本基礎的人可能上手有點難,這篇經驗就介紹一下lua的入門。lua的入口函數在哪裡?lua沒有入口函數,按照順序 從上到下 執行暴漏在function以外的語句知道了所謂的入口函數,那這裡介紹經典程序 「hello world!」內容如下:print("hello world!"); --我是執行的第一條語句注釋應該怎麼用1、單行注釋中,連續兩個減號"--"表示注釋的開始,一直延續到行末為止。相當於C++語言中的"//"。
  • ARM棧回溯——從理論到實踐,開發IDA-arm-unwind-plugin
    arm ehabi 的回溯方式,再到 elf 文件中的 unwind 信息,最後實現一款 IDA 裡實時進行 arm 棧回溯的插件,覆蓋了現代 arm 棧回溯的全部內容,希望能給大家帶來幫助。ehabi講了這麼多,終於引出本系列的重點:arm ehabi。