导航:首页 > 操作系统 > linuxso文件打开

linuxso文件打开

发布时间:2022-05-08 20:15:14

linux上.so文件可以直接运行吗

so文件不可以直接运行的,so文件是动态函数库文件,函数库文件(包括.a文件和.so文件)只能用来被调用运行,不能直接运行的,so文件就相当于Windows下的dll文件,dll文件就是不能直接运行的。

⑵ linux的C编程,怎么使用so文件

linux下的.so文件为共享库,相当于windows下的dll文件,使用方法如下:
在你的工程源代码里包含.h头文件,然后可以调用动态库里的函数,在链接的时候加上如下编译器参数:
-l xx.so
如果你的so文件是以lib开头的,还可以直接这样使用:
-lxx
xx是你的.so文件名
其实使用方法和你使用数学库函数是一样的,源代码中添加
#include <math.h>,编译的时候,加上-lm参数。

⑶ 请问我有一个.so文件,如何在Linux下编程使用呢

-lxx

xx是你的.so文件名

其实使用方法和你使用数学库函数是一样的,源代码中添加

#include <math.h>,编译的时候,加上-lm参数。

注:linux下的.so文件为共享库,相当于windows下的dll文件。

(3)linuxso文件打开扩展阅读:

linux下编写调用so文件实例

.so是Linux(Unix)下的动态链接库. 和.dll类似.

比如:

文件有: a.c, b.c, c.c

gcc -c a.c

gcc -c b.c

gcc -c c.c

gcc -shared libXXX.so a.o b.o c.o

要使用的话也很简单. 比如编译d.c, 使用到libXXX.so中的函数, libXXX.so地址是MYPATH
gcc d.c -o d -LMYPATH -lXXX

注意不是-llibXXX

test.c文件和一个test.h,这两个文件要生成libsotest.so文件。然后我还有一个testso.c文件,在这个文件里面调用libsotest.so中的函数。

编写的过程中,首先是编译so文件,我没有编写makefile文件,而是参考的2里面说的直接写的gcc命令

因为so文件里面没有main函数,所以是不可执行的,所以编译的时候要加上-c,只生成目标文件。

⑷ LINUX下.so结尾的文件如何运行,或者使用

.so结尾的文件是动态链接库,动态链接库不能主动运行,只能被动调用。

.so的使用方法:

  1. 需要这个库放置到程序的搜索路径下

  2. 需要这个库提供的头文件在c/c++程序中链接调用

  3. c/c++程序执行时会到搜索路径下动态加载.so库

⑸ 怎么打开.so文件

SO文件为主要与primarily Unknown Apple II File (found on Golden Orchard Apple II CD Rom)相关联的开发者文件 。
打开 SO文件的最快速最容易的方法便是双击文件。这样做可以让Windows智能决定使用正确的程序打开SO文件。
若出现无法打开SO文件的情况,很可能是因为电脑上没有安装查看或编辑SO文件扩展名的恰当程序。
若电脑打开了SO文件,但使用的是错误的应用程序,则需要更改Windows注册文件关联设置。也就是说,Windows正在使用错误的程序关联SO 文件扩展名。

⑹ linux 中怎么看.so 文件

方法一:
文件名已经带有版本号:

这种情况下很容易就能够看到软链指向的文件的版本号是 1.0.1
方法二:
当文件名不带版本号时:如下所示

使用readelf -a ***.so读取出文件的版本号,不过此时只能读取到主版本号,version:1

方法三:
如果文件名不带版本号,且又想知道具体的版本号的时候怎么办呢?
这时候只能使用傻瓜方法,生成md5值与已知版本号的共享库相对比了。
$ md5sum fcrypt.so.1.0.1
fcrypt.so.1.0.1
$ md5sum fcrypt.so
fcrypt.so

两个md5值一致,由此得出版本应该是1.0.1。

⑺ linux中.so后缀的文件怎么使用

在WINDOWS系统中有很多的动态链接库(以.DLL为后缀的文件,DLL即Dynamic Link Library)。这种动态链接库,和静态函数库不同,它里面的函数并不是执行程序本身的一部分,而是根据执行程序需要按需装入,同时其执行代码可在多个 执行程序间共享,节省了空间,提高了效率,具备很高的灵活性。同样,LINUX的也具备类似的动态链接库,而且为数不少。在/lib目录下,就有许多以.so作后缀的文件,这就是LINUX系统应用的动态链接库,只不过与WINDOWS叫法不同,它叫so,即Shared Object,共享对象。(在LINUX下,静态函数库是以.a作后缀的) X-WINDOW作为LINUX下的标准图形窗口界面,它本身就采用了很多的动态链接库(在/usr/X11R6/lib目录下),以方便程序间的共享, 节省占用空间。flash只是一个插件,在windows中就是一个ocx的链接库方式(和dll略有不同),因此linux中一旦你了一个共享函数库,你还需要安装它。其实简单的方法就是拷贝
你的库文件到指定的标准的目录(例如/usr/lib),然后运行ldconfig。
如果你没有权限去做这件事情,例如你不能修改/usr/lib目录,那么
你就只好通过修改你的环境变量来实现这些函数库的使用了。首先,
你需要创建这些共享函数库;然后,设置一些必须得符号链接,特别
是从soname到真正的函数库文件的符号链接,简单的方法就是运行ldconfig:
ldconfig -n directory_with_shared_libraries
然后你就可以设置你的LD_LIBRARY_PATH这个环境变量,它是一个以逗号
分隔的路径的集合,这个可以用来指明共享函数库的搜索路径。例如
,使用bash,就可以这样来
启动一个程序my_program:
LD_LIBRARY_PATH=.LD_LIBRARY_PATH my_program

⑻ Linux c++开发.so文件的使用

假设在linux上用gcc编译程序,需要用下列编译选项生成.so文件:

gcc -fPIC -shared
.so 文件安装一般是在/usr/lib或者/usr/local/lib下,安装后不需要绝对路径即可使用。当然你也可以安装到工程文件夹下面,不过很少有这么做的。使用时只需要dlopen()函数打开这个库,用dlsym()函数将动态库的函数体加载进来;同样已加载的动态函数库可以用dlclose()关闭。
详细使用方法网络搜dlopen 即可。

⑼ .so文件怎么打开啊急急急

工具/材料:记事本,so文件。

1、首先在桌面上,选中“so文件”图标。

⑽ linux环境java如何调用so文件

用JNI实现
实例:

创建HelloWorld.java
class HelloWorld
{
private native void print();
public staticvoid main(String[] args)
{
new HelloWorld().print();
}

static
{
System.loadLibrary("HelloWorld");
}
}
注意print方法的声明,关键字native表明该方法是一个原生代码实现的。另外注意static代码段的System.loadLibrary调用,这段代码表示在程序加载的时候,自动加载libHelloWorld.so库。
编译HelloWorld.java
在命令行中运行如下命令:
javac HelloWorld.java
在当前文件夹编译生成HelloWorld.class。
生成HelloWorld.h
在命令行中运行如下命令:
javah -jni HelloWorld
在当前文件夹中会生成HelloWorld.h。打开HelloWorld.h将会发现如下代码:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: print
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_print
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif
该文件中包含了一个函数Java_HelloWorld_print的声明。这里面包含两个参数,非常重要,后面讲实现的时候会讲到。
实现HelloWorld.c
创建HelloWorld.c文件输入如下的代码:
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"

JNIEXPORT void JNICALL

Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
}
注意必须要包含jni.h头文件,该文件中定义了JNI用到的各种类型,宏定义等。
另外需要注意Java_HelloWorld_print的两个参数,本例比较简单,不需要用到这两个参数。但是这两个参数在JNI中非常重要。
env代表java虚拟机环境,Java传过来的参数和c有很大的不同,需要调用JVM提供的接口来转换成C类型的,就是通过调用env方法来完成转换的。
obj代表调用的对象,相当于c++的this。当c函数需要改变调用对象成员变量时,可以通过操作这个对象来完成。
编译生成libHelloWorld.so
在Linux下执行如下命令来完成编译工作:
cc -I/usr/lib/jvm/java-6-sun/include/linux/
-I/usr/lib/jvm/java-6-sun/include/
-fPIC -shared -o libHelloWorld.so HelloWorld.c
在当前目录生成libHelloWorld.so。注意一定需要包含Java的include目录(请根据自己系统环境设定),因为Helloworld.c中包含了jni.h。
另外一个值得注意的是在HelloWorld.java中我们LoadLibrary方法加载的是
“HelloWorld”,可我们生成的Library却是libHelloWorld。这是Linux的链接规定的,一个库的必须要是:lib+库
名+.so。链接的时候只需要提供库名就可以了。
运行Java程序HelloWorld
大功告成最后一步,验证前面的成果的时刻到了:
java HelloWorld
如果你这步发生问题,如果这步你收到java.lang.UnsatisfiedLinkError异常,可以通过如下方式指明共享库的路径:
java -Djava.library.path='.' HelloWorld
当然还有其他的方式可以指明路径请参考《在Linux平台下使用JNI》。
我们可以看到久违的“Hello world!”输出了。

阅读全文

与linuxso文件打开相关的资料

热点内容
五十音图pdf 浏览:865
什么叫下架服务器 浏览:111
pdf分辨率查看 浏览:15
如何将word转pdf 浏览:186
我的世界ec服务器怎么调配置 浏览:259
单片机换标 浏览:595
语音系统和方舟编译器哪个好 浏览:316
html用什么编译器显示 浏览:185
程序员打印系统 浏览:73
安装系统端口和服务器地址怎么看 浏览:263
编译指针 浏览:410
用于解压房款的担保协议 浏览:672
程序员补班 浏览:564
组件编译语言 浏览:815
c文件夹怎么复制 浏览:966
linux统计ip流量 浏览:997
905减407的竖式算法 浏览:647
我的世界网易版如何查看服务器种子 浏览:632
施工现场临时水管直径算法 浏览:5
如何刷新服务器redis缓存 浏览:502