Tag: 共享库

如何查看Linux共享库导出的函数列表?

我想在Linux上查看共享库的导出函数。 什么命令允许我这样做? (在Windows上我使用的程序依赖)

.so,.la和.a库文件有什么区别?

我知道一个.so文件是一种dynamic库(大量的线程可以共享这样的库,所以不需要在内存中有多个拷贝)。 但.a和.la什么.la ? 这些都是静态库吗? 如果dynamic库比静态库有更大的优势,为什么仍然有很多静态库? 我也想知道加载库的基本机制(这两种types)以及在某个地方使用某个lib中的一段代码的方式。 我应该学习哪一部分内核? 我应该知道什么相关的Linux命令/实用程序才能知道进程是如何运行的? (我现在只知道ld命令) 什么时候应该尝试将代码构build到.so或.a ? 哪一个更好? [mirror@home ins_openvpn]$ ls lib/openvpn/plugins/ -l total 96 -rw-r–r– 1 mirror mirror 22892 Sep 2 23:25 openvpn-plugin-auth-pam.a -rwxr-xr-x 1 mirror mirror 931 Sep 2 23:25 openvpn-plugin-auth-pam.la -rwxr-xr-x 1 mirror mirror 23621 Sep 2 23:25 openvpn-plugin-auth-pam.so -rw-r–r– 1 mirror mirror 17228 Sep 2 23:25 openvpn-plugin-down-root.a […]

显示Linux上可执行文件使用的所有库

我想知道我的系统上的可执行文件使用哪些库。 更具体地说,我想排名使用哪些库最多,以及使用它们的二进制文件。 我怎样才能做到这一点? (假设我们只是在谈论共享库)

加载共享库时发生Linux错误:无法打开共享目标文件:没有这样的文件或目录

程序是Xenomaitesting套件的一部分,从Linux PC与Linux + Xenomai ARM工具链交叉编译。 # echo $LD_LIBRARY_PATH /lib # ls /lib ld-2.3.3.so libdl-2.3.3.so libpthread-0.10.so ld-linux.so.2 libdl.so.2 libpthread.so.0 libc-2.3.3.so libgcc_s.so libpthread_rt.so libc.so.6 libgcc_s.so.1 libstdc++.so.6 libcrypt-2.3.3.so libm-2.3.3.so libstdc++.so.6.0.9 libcrypt.so.1 libm.so.6 # ./clocktest ./clocktest: error while loading shared libraries: libpthread_rt.so.1: cannot open shared object file: No such file or directory 编辑:好的,我没有注意到最后的.1是文件名的一部分。 这是什么意思呢?

什么是.a和.so文件?

我目前正试图将ac应用程序移植到AIX,并且感到困惑。 什么是.a和.so文件,以及在构build/运行应用程序时如何使用它们?

从C中优雅地调用C ++

我们开发一些简单的C (C99)项目。 但是,我们在C++有一个作为源代码(math库)的库。 我们需要这个库,所以我想问一下,整合这个源代码的最优雅的方法是什么? C和C++大小之间的比例是20:1因此移到C++不是选项。 我们应该使用静态库吗? DLL? (这一切都在Windows上)。

如何在我自己的android库模块中添加人行横道webview?

我正在开发一个Android库模块,它必须包含Crosswalk Webview。 我使用Github Sonatype( https://github.com/sonatype/ )创build库。 它工作正常,没有Crosswalk Webview。 我尝试了以下3种方法来包含Crosswalk。 方法1: 在我的图书馆项目应用程序gradle中添加Crosswalk Webview库 错误:(编译错误) 无法解决:org.xwalk:xwalk_core_library:18.48.477.13 方法2: 在我的图书馆项目中添加crosswalk aar文件 添加aar文件的参考链接如何将.aar文件导入到Android Studio 1.1.0中,并在我的代码中使用它 我从https://download.01.org/crosswalk/releases/crosswalk/android/stable/18.48.477.13/下载了Crosswalk Webview 错误:(编译错误) 无法解决:MyLIBApplication:xwalk_core_library_java:未指定 方法3: 在我的图书馆项目中添加人行横道的jar文件 下载链接https://download.01.org/crosswalk/releases/crosswalk/android/stable/18.48.477.13/ 错误:这种方法没有编译错误,但它给运行时错误是java.lang.NoClassDefFoundError:org.xwalk.core.R $ string 注意:我尝试了jar(普通,共享模式)文件

如何指定链接时使用的库版本?

下面的问题应用程序在运行时如何parsing不同版本的共享库? ,我想知道如何在链接命令行上指定要使用哪个版本的库? 假设我有 libmy.so.1.0 libmy.so.1 -> libmy.so.1.0 libmy.so.2.0 libmy.so.2 -> libmy.so.2.0 libmy.so -> libmy.so.2 指定与可执行文件链接的库的常用方法不会显示要使用的版本。 此外,人们很可能想要链接最新的版本。 因此,通常的线路在大多数情况下工作正常。 gcc app.o -lmy -o app 链接应该使用库的版本1的app的命令行是什么?

编译失败,因为在创build共享对象时不能使用“.rodata.str1.8”的重定位R_X86_64_32“

我试图从VPS中的makefile编译这个源代码,但它不工作。 VPS是一个64分的操作系统 这是完整的错误 # make gcc -c -O3 -w -DLINUX -I../SDK/amx/ ../SDK/amx/*.c g++ -c -O3 -w -DLINUX -I../SDK/amx/ ../SDK/*.cpp g++ -c -O3 -w -DLINUX -I../SDK/amx/ *.cpp g++ -O2 -fshort-wchar -shared -o "TCP_V1.so" *.o /usr/bin/ld: TCP-LINUX_V1.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be used when making a shared object; recompile with -fPIC TCP-LINUX_V1.o: could not read […]

你如何find你的linux机器上安装了什么版本的libstdc ++库?

我发现了以下命令: strings /usr/lib/libstdc++.so.6 | grep GLIBC 从这里 strings /usr/lib/libstdc++.so.6 | grep GLIBC 。 它似乎工作,但这是一个特设/启发式的方法。 有没有一个特定的命令可以用来查询库的C ++版本? 或者是我find了接受方法的方法?