2013-11-28 90 views
3

我正在爲Elementary OS Luna上的Scratch文本編輯器應用程序編寫擴展。但是這些文檔對於擴展的創建實際上是不存在的,我不知道如何在編寫擴展的主代碼之後繼續。如何生成.so文件

我已經寫了擴展名。我無法使用或測試它,因爲它需要「安裝」。我花了數小時尋找文檔,但他們不存在。但是,我沒有找到暫存啓動板頁,上面寫着

通常你需要生成一個pluginname.so文件,並把它放在 的lib /刮/插件/ pluginname與pluginname.plugin文件的註釋

太好了。這似乎是爲Scratch創建擴展的最後一部分。什麼是.so文件,我怎麼才能生成一個?我已經創建了其他必要的文件,如.plugin文件和.vala文件。

是的,我已經搜索過.so文件,但是我發現的所有東西都是隨機的東西,就像使用C或C++頭文件一樣,但顯然這對我來說不起作用,因爲我使用Vala?

如何生成.so文件?我從什麼生成它?

+1

這不是隨機的!您可以使用生成.so文件的語言(如C/C++等)編寫擴展,然後在臨時應用程序中使用它。看到這個Q /一個http://stackoverflow.com/questions/9809213/what-are-a-and-so-files –

+0

@PreetSangha謝謝你的鏈接:-)順便說一句,.so文件基本上像Windows中的DLL的? – uSeRnAmEhAhAhAhAhA

+0

你有其他資源嗎?我不知道那個網頁在說什麼:( – uSeRnAmEhAhAhAhAhA

回答

1

Scratch Wiki

由於瀏覽器的安全限制,刮2.0不能直接 硬件設備進行交互。相反,硬件擴展附帶 幫助程序應用程序,這是一個單獨的應用程序,用戶必須在其計算機上安裝並運行 。 Scratch通過HTTP 請求與助手應用程序進行通信,助手應用程序會與硬件進行通信。在未來, 某些擴展可能會將其輔助應用程序打包爲瀏覽器插件。

下面是創建和測試劃痕擴展步驟:

  1. 創建擴展描述文件
  2. 創建您的助手應用程序並啓動它
  3. 打開刮開2離線編輯器
  4. 進口擴展說明(按Shift並單擊「文件」並從菜單中選擇「導入實驗擴展名」)
  5. 新的擴展塊將出現在更多塊調色板
  6. 測試你的擴展並迭代!

助手應用程序可以寫在支持服務器套接字,如Python,Node.js的,Java和C等

就像你我身邊維基追逐任何語言但我無法找到源代碼示例。所以我能做的就是一般地解決你的問題。

如果你看Build .so file from .c file using gcc command line你會看到一個簡單的.so可以創建。然而什麼代碼進入Scratch擴展我不知道。抱歉。

編輯:更多的使用谷歌搜索,我發現a sample from Nathan Dinsmore on GitHub that doesn't use C rather it uses JavaScript,雖然它不創建.so擴展名,它似乎有創建擴展的完整描述。他還提供了一對tutorials

編輯++:And here is another sample written in Java

+1

我想我們在這裏談論兩件不同的事情。你鏈接到的Scratch Wiki似乎不是爲了我認爲你鏈接的是Scratch編程語言,並且你鏈接的樣例是scratch語言的擴展,我認爲這對我來說是如此令人困惑;沒有任何資源可用於創建擴展** ** th e臨時文本編輯器_。 – uSeRnAmEhAhAhAhAhA

+0

有兩個Scratch's。 Linux發行版基本操作系統附帶的Scratch Text Editor,然後是Scratch;一種編程語言。我正在爲前者尋找資源。 – uSeRnAmEhAhAhAhAhA

+0

我無法使用鏈接到的那些頁面中包含的信息,因爲要創建Scratch擴展(它們是用Vala而不是C或C++編寫的),您不會創建可執行文件,只需將它們另存爲.vala文件即可。該教程依賴於可執行文件。我已經按照教程,但不可能生成.so文件,因爲我沒有可執行文件(你沒有爲Scratch文本編輯器擴展創建可執行文件) – uSeRnAmEhAhAhAhAhA

2

我覺得The Vala tutorial可幫助創建實際共享庫共享對象

可以使用autotoolscmake或者你可以編譯並直接在命令行中,從瓦拉教程引用鏈接共享庫:

編制和使用連接命令行

瓦拉是尚不能直接創建動態或靜態庫。要創建庫,請繼續使用-c(僅編譯) 切換並將目標文件鏈接到您最喜歡的鏈接程序,即 libtool或ar。

$ valac -c ...(source files) 
$ ar cx ...(object files) 

或編譯中間的C代碼使用gcc

$ valac -C ...(source files) 
$ gcc -o my-best-library.so --shared -fPIC ...(compiled C code files)... 
+0

+1 Vala教程描述瞭如何做得很好。 –

+1

謝謝@user,我會研究這個。看起來很有希望! :-D +1 – uSeRnAmEhAhAhAhAhA