导航:首页 > 操作系统 > linuxeclipse动态库

linuxeclipse动态库

发布时间:2022-09-27 02:23:24

1. 怎样在eclipse添加引用的动态库

你说的动态库,就是c/c++写的 so库吧
关于so库的使用,建议你到官网下载NDK NDK那里有一堆的调用例子
首先你要将so库文件复制到 libs目录下的armeabi目录下
然后用java建立一个java与c/c++通信的本地方法

2. 如何让linux加载当前目录的动态库

linux 加载当前目录的动态库的方法是:设置合适的环境变量LD_LIBRARY_PATH。
设置方法有以下三种:

1、临时修改,log out之后就失效
在terminal中执行:export LD_LIBRARY_PATH=./

2、让当前帐号以后都优先加载当前目录的动态库
修改~/.bash_profile在文件末尾加上两行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH

3、让所有帐号从此都优先加载当前目录的动态库
修改/etc/profile在文件末尾加上两行: LD_LIBRARY_PATH=./ 和 export LD_LIBRARY_PATH

3. linux动态库和静态库的区别

动态链接库和静态链接库一般是编译集成一系列的接口(函数)
在程序源代码编译完成后通过编译器编译并通过链接器与这些库进行链接
动态链接库与静态链接库的区别在于链接器在进行链接时静态库会被直接编译进程序里
而动态链接库并不会,我们这里将这些链接库称作依赖(动态库和静态库)
程序的运行需要这些依赖,程序在静态链接后该程序本身便已包含该依赖
而动态链接后的程序本身本不包含该依赖,这些依赖需要执行者自行安装进操作系统(动态库、运行时库)
程序运行时会动态地加载这些库

linux上动态库一般的后缀后为.so
静态库一般的后缀为.a
由于静态链接会直接将库编译进程序里所以静态编译后的程序相较于动态链接所要大
这就是因为静态链接会将链接库编译进程序里的原因,所以占用就要大了
出于这种原因,静态库不易于维护与更新,如果链接库中有实现有bug等需要更新则需要更新整个程序,因为静态库被编译进程序中了
但动态库就没有这种情况了,因为动态库是程序运行时动态加载的,所以我们只需要更新动态库而不需要更新所有依赖该库的程序(软件)

另一方面,很多程序的开发都会使用到相同的链接库,也就是很多程序(软件)会有相同的依赖
如果将这些依赖全部静态编译的话将会造成存储资源占用过多而造成资源浪费
而使用动态库的方式这些程序(软件)则可以共享一个链接库,而不需要每个程序都带一个链接库,这样就大大地减少了存储资源占用空间

4. linux eclipse c 怎样编译链接三方动态库

电脑上的CPU为 x86,手机CPU为ARM架构,你的动态链接库必须要ARM版Gcc编译器编译后才能跑在手机上,Android NDK里面附带了一个ARM版的编译器,你用NDK的编译器重新编译,然后就可以用JNI调用了,JNI调用不是一言两语能说清的,有专门的教程

5. eclipse怎么链接动态链接库

前面的博客中讲了在window下C工程中封装dll和lib,在linux下同样需要封装动态链接库,linux下的动态链接库名称以lib开头,扩展名为.so。下面记录在linux下用Eclipse进行C编程时封装动态链接库的方法和向工程中添加动态链接库的方法。 一、创建动态链接库 1、创建工程 new->project->c++ project 选择Shared Library->Empty Project.输入工程名a,点击finish,完成工程的创建。 2、编写代码

6. 关于linux下连接动态库问题

gcc编译时,当使用动态库编译可以按照几种写法
1.gcc test.c ./libSDL2-2.so
2.gcc test.c -lSDL2-2
3.gcc test.c -L/home/test -lSDL2-2
一般的编译参数都是按照2或3去写
2写法的含义是从/lib或者/usr/lib目录下寻找名称为SDL2-2的库,即寻找/lib/libSDL2-2.so或者/usr/lib/libSDL2-2.so文件进行链接,当然如果没有动态库就会去找静态库,再没有应该就会在编译时报错
3写法的含义是从-L参数首先从指定的目录中寻找需要链接的库文件,随后再去寻找系统文件夹中是否存在需要的库
1写法的含义是将当前目录下的./libSDL2-2.so.0文件链接进最终文件,因此执行readelf -a a.out后在动态库部分所看到的路径就是./libSDL2-2.so.0,进而在执行文件时仅会从当前目录下寻找libSDL2-2.so.0文件,当执行文件时所在的目录下没有该文件时就会出现找不到库文件的操作

你第二次操作时,因为function.so库文件与a.out文件在同一个目录,同时也是在该目录下执行的ldd操作及运行a.out,a.out在加载动态库时从当前目录下找到了所需要的库文件,此时能够执行成功(ldd命令实质是一个脚本,通过设置环境变量运行动态库链接器来输出所有待链接的动态库)。
你可以试试将a.out拷贝至其他目录再次运行,将出现和第一次操作时一样的现象,找不到function.so文件。

具体的解决方法就是修改编译参数,将./libSDL2-2.so.0修改为-lSDL2-2并将libSDL2-2.so.0文件拷贝至/usr/lib目录下,并且可能因为没有修改链接器的缓存文件(将可能找不到带版本号后缀的动态库),需要在/usr/lib目录下建立一个文件连接(ln -s libSDL2-2.so.0 libSDL2-2.so)或者直接修改名称为libSDL2-2.so

7. Linux下的静态库和动态库

静态库

可以把它想象成是一些代码的集合,在可执行程序运行前就已经加到了代码中,成为了执行程序的一部分,一般是以.a为后缀的文件名,Windows下后缀为.lib。静态库的命名也分为三部分,1、前缀:lib,2、库的名称:随意,如lisi,3、后缀:.a。

静态库优缺点

上面简单介绍了静态库,那它自然也会有优缺点,这里来介绍下它的优缺点。

优点:1、在最后,函数库是被打包到应用程序中的,实现函数本地化、寻址方便、高效。2、程序在运行的时候,与函数库没有关系,移植性更强。

缺点:1、消耗资源较大,每个进程在使用静态库的时候,都要复制一份才可以,这也就造成了内存的消耗。2、在程序更新、部署、发布的时候,使用静态库相对麻烦,如果一个静态库更新了,那它的应用程序都需要重新编译,再发送给用户,有的时候可能只是一个小的改动,但对于用户来说,会导致整个程序重新下载。

动态库

在程序编译时不会被连接到目标代码中,在后期运行时才会载入,不同的应用程序如果调用相同的库,内存中只有一份共享库的拷贝,也就避免了空间的浪费问题。一般以.so作为文件后缀名,也分为三部分:1、前缀:lib,2、库名称:自定义,3、后缀:.so

动态库优缺点

优点:1、节省内存2、部署、升级相对方便,只需要更换动态库,再重新启动服务即可。

缺点:1、加载速度比静态库慢2、移植性较差,需要把所有用到的动态库进行移植。

8. 如何在linux下面开始阅读开源程序(eclipse)

今天终于找到点方法,记下来 阅读调试环境是在Eclipse 1. 将开源工程安装 安装的时候,要注意安装为debug的,这个目录一般安装到自己的学习目录即可吧 如: ./configure --prefix=/home/godpig/study/opensrc --enable-debug 然后再 make以及make install 这个时候,在/home/godpig/study/opensrc目录下面,已经有安装好的程序了,里面包括 include、lib等子文件夹 在开发的时候,include是要被包含的头文件所在的目录,lib是开发库 2. 打开eclipse,新建一个HelloWorld的工程 写一个简单的调用这个开源项目的代码,保存为HelloWorld.c即可,也可以直接从开源工程里面找example。 然后开始配置环境 右键当前测试工程 - Properties - c/c++ build - settings 这个时候在右边选项卡里,第一个选项卡默认就为:Tools Setting Toos Setting - GCC Compiler - Directories 添加include目录,即:/home/godpig/study/opensrc/include Toos Setting - GCC Linker - Libraries 在Library search path中添加库目录,即:/home/godpig/study/opensrc/lib。 在Libraries中添加上需要链接的库,如:opensrc,这个时候会自动搜索libopensrc.a。(但在我这儿有问题,需要在GCC Linker的Command中,手动在gcc指令之后添加链接选项: -lopensrc 才行) 这样,头文件会自动从那个include中搜索,库会自动lib中搜索 3.开始单步调试 这个时候就可以编译这个HelloWorld了,应该可以编译链接成功 如果直接Debug无法执行程序,可能出现找不到opensrc.so等错误,这可能是你的那个lib目录,即:/home/godpig/study/opensrc/lib不在系统的LD_LIBRARY_PATH环境变量中,无法自动加载动态库(如果安装的时候,没有用--prefix指定自定义的目录,一般不会出现这个问题吧) 如果出现了找不到opensrc.so的错误,则需要修改系统的LD_LIBRARY_PATH,或者在eclipse中配置Debug的这个环境变量方法如下:点Debug的那个图标,下面有个Debug Configurations - Environment - New 这个时候把LD_LIBRARY_PATH作为名字,/home/godpig/study/opensrc/lib作为值填进去,保存这个时候再单步调试,一切ok了~:-)

9. 如何使用Eclipse的NDK开发动态库,静态库

1.动态库:

一、创建动态链接库1、创建工程new->project->c++ project选择Shared Library->Empty Project.输入工程名a,点击finish,完成工程的创建。

2、编写代码在windows下封装动态链接库时对要封的函数要用__declspec(dllexport)来标明,在Linux下不用,在linux下只需要直接把要封的函数的声明放到一个。h文件中,要用这个库时将相应的。h文件加载到工程中。

3、生成动态链接库编译代码,成功后在Debug目录下会生成liba.so文件。

二、动态链接库的使用1、创建工程new->c++ project->Executable->Empty Project.工程名为libr 2、编写所需代码,并将相应的。h文件放到工程目录下并加载到工程中。

3、加入动态链接库liba.so右键工程Properites->C/C++Build->Settings,然后如下图



编译通过!
为了我们的程序能够正确载入,我们需要让我们的程序在我们的系统范围内也能够找到我们的库。这时候我们需要在设置一下。

阅读全文

与linuxeclipse动态库相关的资料

热点内容
什么网站可以看剧情 浏览:532
cad图纸空间命令 浏览:135
GRA26K 浏览:478
单片机stm32实验心得体会 浏览:617
php压缩包如何安装 浏览:646
免费看慢网站 浏览:150
外国影片女孩头一次出去上外地 浏览:478
程序员创业接到小程序订单 浏览:391
java复用反编译代码 浏览:551
qq聊天发送的文件在哪个文件夹 浏览:819
代理服务器地址格式是什么意思 浏览:443
苏e行app为什么会有登录过期 浏览:800
杰森坐牢 下象棋是什么电影 浏览:408
苹果相机也么加密 浏览:891
java图片打印 浏览:173
恶魔小丑电影 浏览:548
apriori算法软件 浏览:24
波利亚怎样解题pdf 浏览:570
法国电影耽美 浏览:642
java调用迅雷 浏览:423