当前位置: 首页 > 知识库问答 >
问题:

如何生成. so文件

马星阑
2023-03-14

我正在为初级操作系统Luna上的Scratch文本编辑器应用程序编写一个扩展。但是对于扩展的创建,文档实际上是不存在的,我不知道在编写了扩展的主要代码之后如何继续。

我已经写了扩展名。我还不能使用或测试它,因为它需要“安装”。我花了几个小时寻找文档,但它们不存在。然而,我在scratchlaunchpad页面上找到了一条评论

通常,您必须生成一个pluginname.so文件,并将其与pluginname.plugin文件一起放在lib/scratch/plugin/plugin name中

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

是的,我已经搜索了.so文件,但我找到的只是一些随机的东西,比如将它与C或C标头一起使用,但显然这对我来说不起作用,因为我使用的是Vala?

如何生成. so文件?我从哪里生成它?

共有2个答案

谭卜鹰
2023-03-14

来自从头开始的维基

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

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

  1. 创建扩展描述文件
  2. 创建助手应用程序并启动它
  3. 打开Scratch 2脱机编辑器
  4. 导入扩展描述(按住shift键单击“文件”并从菜单中选择“导入实验扩展”)
  5. 新的扩展块将显示在更多块调色板中
  6. 测试您的扩展并迭代

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

像你一样,我也在维基上查过,但我找不到一个有来源的例子。所以我所能做的就是一般地回答你的问题。

如果你看看建筑。所以文件从。使用gcc命令行你会看到一个简单的。所以可以被创造出来。然而,我不知道什么代码进入了一个Scratch扩展。抱歉。

编辑:再搜索一下,我在GitHub上找到了Nathan Dinsmore的一个例子,它不使用C,而是使用JavaScript,虽然它没有创建. so扩展,但它确实有创建扩展的完整描述。他还提供了一些教程

编辑:这是另一个用Java编写的示例。

刘向阳
2023-03-14

我认为Vala教程可能有助于创建实际的共享库或共享对象。

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

使用命令行编译和链接

Vala还不能直接创建动态或静态库。要创建库,请继续-c(仅编译)开关并将目标文件与您最喜欢的链接器链接,即lib工具或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)...
 类似资料:
  • 下面是我的cmakelists.txt文件 cmake_minimum_required(版本3.4.1) find_library(log-lib日志) target_link_libraries(native-lib${log-lib}) 我在中指定了,,因为我想要一个共享的对象库。 但它没有给我so文件。 我错过了什么?

  • 一直以来不会使用C++一直是我心头痛,不过学习Go从某种意义上补偿了我这个遗憾。 比如生成dll一直以来几乎就是C和C++的专利,现在我可以用Go轻松的实现这一点。 下面我使用一个实例来做到这一点,这个是我写的判断jpeg图是不是正向的一个Go的函数 package main import "C" import ( "fmt" "os" SunnyUtil "githu

  • 我在AS中有一个带有本机库的项目。我正在尝试使用实验插件(gradle实验:0.6.0-alpha5)来获取. so文件(稍后在System.loadLibrary()中使用它)。但是我不能生成它们。我真的不明白,为什么? 我用这个指令编写了build.gradle。这是: 尝试运行应用程序时出现的错误: java.lang.无法从加载器加载ImageProcdalvik.system.PathC

  • 我试图为Linux动态库(.so文件)创建一个hello world项目。所以我有一个文件HELLO.C: 如何从命令行使用gcc创建导出的.so文件?

  • 如何通过命令行生成?我尝试了命令,但这不起作用。

  • 问题内容: json.php代码 我必须生成文件。 问题答案: 这是一个示例代码: