如何生成.so文件

时间:2013-11-28 05:13:25

标签: linux gtk gnome vala

我正在为Elementary OS Luna上的Scratch文本编辑器应用程序编写扩展。但是文档几乎不存在扩展创建,我不知道在编写扩展的主代码后如何继续。

我已经写了扩展名。我不能使用或测试它,因为它需要“安装”。我花了几个小时寻找文档,但它们不存在。不过,我确实在临时启动板页面上找到了评论

  

通常你必须生成一个pluginname.so文件并将其放入   带有pluginname.plugin文件的lib / scratch / plugins / pluginname

大。这似乎是为Scratch创建扩展的最后一部分。什么是.so文件,如何生成?我已经创建了其他必要的文件,如.plugin文件和.vala文件。

是的,我已经搜索了.so文件,但我发现的所有内容都是随机的,就像使用C或C ++标题一样,但显然这对我不起作用,因为我正在使用Vala?

如何生成.so文件?我从中生成什么?

2 个答案:

答案 0 :(得分:2)

我认为The Vala tutorial可能有助于创建实际的共享库共享对象

您可以使用autotoolscmake,也可以直接从命令行编译和链接共享库,引用自Vala教程:

  

使用命令行进行编译和链接

     

Vala尚无法直接创建动态或静态   库。要创建库,请继续-c(仅编译)   切换并链接目标文件与您最喜欢的链接器,即   libtool或ar。

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

或用gcc编译中间C代码

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

答案 1 :(得分:1)

来自Scratch Wiki

  

由于浏览器安全限制,Scratch 2.0无法与之交互   硬件设备直接。相反,硬件扩展附带一个   帮助应用程序,用户必须安装和运行的单独应用程序   在他们的电脑上。 Scratch通过HTTP与帮助应用程序通信   请求,帮助应用程序与硬件进行通信。在将来,   一些扩展可能会将其帮助应用程序打包为浏览器插件。

     

以下是创建和测试Scratch扩展的步骤:

     
      
  1. 创建扩展程序描述文件
  2.   
  3. 创建帮助应用并启动它
  4.   
  5. 打开Scratch 2离线编辑器
  6.   
  7. 导入扩展程序说明(按住Shift键并单击“文件”,然后从菜单中选择“导入实验扩展程序”)
  8.   
  9. 新的扩展程序块将出现在更多块调色板
  10. 中   
  11. 测试你的扩展并迭代!
  12.         

    Helper应用程序可以用支持服务器套接字的任何语言编写,例如Python,Node.js,Java,C等。

和你一样,我在wiki周围追逐,但是找不到源代码的例子。所以我所能做的就是一般地解决你的问题。

如果你看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