首页 文章
  • 2 votes
     answers
     views

    无法使用android g独立编译器创建protobuf的共享对象

    我正在尝试使用android arm g编译protobuf作为共享对象,但编译器只输出静态对象 . 这是配置步骤中的错误: 检查/opt/build-android-linux/arm-linux-androideabi-4.4.3/bin/arm-linux-androideabi-g链接器(/opt/build-android-linux/arm-linux-androideabi-4.4...
  • 0 votes
     answers
     views

    ming32-make.exe错误地解析了-I和-L标志

    我在Windows机器上并使用MinGW,尝试编译使用共享库的hello world程序 . 经过一系列荒谬的尝试后,我发现了以下内容: 用gcc手动编译它并为所需目录提供 -I 和 -L 标志工作正常 . 使用MinGW / msys / 1.0 / bin安装目录下提供的 msys make.exe 文件正确执行Makefile,没有任何问题 尝试使用 same Makefile...
  • 27 votes
     answers
     views

    模块和共享库之间的区别?

    Headers 主要涵盖它,模块和共享库之间有什么区别?我刚刚在CMake的 add_library 命令中找到了这个区别,他们说: SHARED库动态链接并在运行时加载 . MODULE库是未链接到其他目标的插件,但可以在运行时使用类似dlopen的功能动态加载 . 但我可以使用dlopen()加载共享对象,不是吗?
  • 2 votes
     answers
     views

    共享库(.so)文件是否需要在链接时显示(或指定)?

    共享库(.so)文件是否需要在链接时显示(或指定)? 我在这里读到(Difference between shared objects (.so), static libraries (.a), and DLL's (.so)?).so文件必须在编译时出现,但根据我的经验,这不是真的吗? 共享库是否仅在运行时使用 dlopen 和 dlsym 进行链接,以便在链接应用程序时,库可能不存在于系统...
  • 0 votes
     answers
     views

    Android共享库的节大小总和大于共享的lib大小

    在Android中,如果我使用objdump工具分析共享库,我会观察到以下内容: 共享库中节大小的总和小于二进制文件大小 . 这是可以理解的,二进制大小= ELF Headers 大小程序 Headers 大小节大小节 Headers 大小 . 但是对于另一个共享库,节大小的总和大于共享库文件大小本身!这似乎非常令人惊讶 . 有没有这种情况会发生? 使用的命令:捕获截面尺寸:prebuilts /...
  • 33 votes
     answers
     views

    剥离linux共享库

    我们最近被要求发布我们的一个库的Linux版本,以前我们在Linux下开发并发布用于Windows,其中部署库通常要容易得多 . 我们遇到的问题是将导出的符号剥离到只有暴露界面中的符号 . 想要这样做有三个很好的理由 保护我们技术的专有方面免受通过导出符号的暴露 . 防止用户遇到有冲突的符号名称问题 . 加快图书馆的加载速度(至少我是这么说的) . 举一个简单的例子: TEST.C...
  • 66 votes
     answers
     views

    -rpath和-L有什么区别?

    gcc 和 ld 提供了许多方法来指定库的搜索路径 - 其中包括 -rpath 和 -L 标志 . 这些联机帮助页显示这两个标志之间没有差异,有效地说每个标志都会向库搜索路径添加一个库 . 但两个旗帜完全相同的事情似乎很奇怪 . 这两个选项之间有什么区别?
  • 0 votes
     answers
     views

    将静态库包含到动态库中

    我们有一个动态库,它是在已停产的工具(Borland Kylix)中开发的,因此我们必须在Red Hat 7.2安装中完成 . 到目前为止,我们在后续版本的Linux中加载此库(libX.so)没有任何问题 . 但是,在最新版本中,如Fedora 21,我们在尝试使用 dlopen 加载库时会收到分段错误信号 . 我们尝试了一些替代方案,其中之一是将旧的静态库链接到此共享库中 . 我们知道这不是最...
  • 14 votes
     answers
     views

    Linux上是否有等效的.def文件用于控制共享库中的导出函数名称?

    我正在Ubuntu 9.10上构建一个共享库 . 我想从库中只导出我的一部分函数 . 在Windows平台上,这将使用模块定义( .def )文件来完成,该文件将包含从库中导出的函数的外部和内部名称列表 . 我有以下问题: 如何将共享库的导出函数限制为我想要的(即等效的.def文件) 使用.def文件作为示例,您可以为函数提供与其内部名称不同的外部名称(用于防止名称冲突以及重新修饰损坏的名...
  • 0 votes
     answers
     views

    共享库的外部符号使用计数

    我想找到一些外部符号,由另一个共享库(.so)使用 . 我很容易就能跑 nm -D ./lib_the_one.so 并通过grepping获取已使用符号的列表,例如'U'(未定义的符号): U The_external_symbol 现在我想知道,在整个库“lib_the_one.so”中存在一些符号的用法(静态) . 更确切地说, 对于某些外部功能有多少直接调用 引用外部变量的次数...
  • 2 votes
     answers
     views

    共享库使用另一个共享库的不同版本到主可执行文件?

    Problem 说我有一个Linux可执行MAIN,它使用旧版本的某个共享库LIB.so(它使用LD_LIBRARY_PATH定位) . 我想MAIN也使用我的库MYLIB.so,除了它使用更新版本的LIB.so. MAIN和MYLIB.so都使用两个版本的LIB.so中出现的具有相同名称(但实现不同)的函数 . 如何在加载MYLIB.so时让应用程序也加载新版本的LIB.so? ...
  • 1 votes
     answers
     views

    如何在提供库的地址时获取共享库中符号的地址?

    我正在学习如何在Linux上使用C / C中的共享库 . 我遇到了一个我不知道如何解决的问题 . 让's say I have a shared library and an executable. However I don' t知道库's name or file location (so I can' t dlopen 它) . 我只能找到库映射到可执行文件内存的地址范围 . 有没有办法以...
  • 0 votes
     answers
     views

    如何更新Matlab共享库?

    似乎Matlab有它的own version的linux共享库 . 我有一个程序需要libwfdb,这是一个共享库,可以调用一些标准的共享库 . 程序在我的机器上工作正常,但是当Matlab尝试使用 system() 函数调用它时,它失败了,因为它的版本太旧了 . 具体来说,我明白了 /usr/local/MATLAB/R2014a/bin/glnxa64/libcurl.so.4: no ver...
  • 2 votes
     answers
     views

    在Linux中从Simulink创建C共享库

    我需要从Simulink模型生成一个带有输入和输出的共享库(.so)文件,并在另一个C项目中逐步运行该模型 . 我知道MATLAB代码生成器能够生成可执行文件和DLL . 尽管如此,我找不到如何生成Linux C共享库 . 如果有人能解释如何生成这些库,我将不胜感激,并提供了有关如何在C中导入和使用它们的最小工作示例 . EDIT 我设法在Qt Creator中创建了一个共享库和一个示例C项目 ....
  • 0 votes
     answers
     views

    将C共享库加载到Matlab中

    我试图在Linux上将一个名为G+Smo的C共享库加载到MATLAB 2016b中 . 编译G Smo后,我得到了一个共享对象文件"gismo.so" . 我尝试使用Matlab命令加载此库:"loadlibrary" . 它没有成功,因为这个命令只支持用C语言编写的函数 . 为了加载C库,我必须在代码周围写一个C Wrapper或者为它创建一个mex -i...
  • 2 votes
     answers
     views

    将共享库与CMake链接

    我正在尝试链接一个名为libtest-lib.so的预编译共享库文件 . 这就是我在CMakeLists.txt底部的内容: link_directories("/projectspath/LinkTest/TestLib/app/build/intermediates/cmake/debug/obj/armeabi-v7a") add_library(testlib lib...
  • 1 votes
     answers
     views

    仅在cmake需要时才安装共享库

    我有一个cmake项目,可以构建多个可执行文件和共享库 . 有选项()设置可确定构建这些可执行文件中的哪些 . 我希望能够做的是阻止构建和安装不需要的共享库 . 所以我做的如下: 在顶级CMakeLists文件中设置(CMAKE_SKIP_INSTALL_ALL_DEPENDENCY TRUE) add_library($ SHARED EXCLUDE_FROM_ALL ...) i...
  • 0 votes
     answers
     views

    使用rpath时,C可执行文件无法找到动态链接共享库

    大家好我为Ubuntu 16.04(g 5.4.0)创建了一个c应用程序,并使用了一些poco库 . 我需要在之前的Ubuntu 14.04(g 4.8.4)中安装该应用程序 . 所以我决定用可执行文件分发共享库 . 关于libstdc .so库的发布我跟着帖子Linking libstdc++ statically: any gotchas?我正在使用以下makefile来构建可执行文件: CC...
  • 7 votes
     answers
     views

    编译器libstdc版本与系统版本

    我试图理解g如何选择它链接的libstdc版本以及当库的“系统”版本不同时它意味着什么 . 我正在使用gcc / g 4.1.2,根据ABI Guidelines doc,包括libstdc .so.6.0.8,果然: -rwxr-xr-x 1 root root 4397810 May 18 2007 /opt/gcc4.1.2/lib/libstdc++.so.6.0.8 基于我对ABI...
  • 0 votes
     answers
     views

    如何在linux中使用模板类[duplicate]构建动态库(.so)

    这个问题在这里已有答案: C++ Shared Library with Templates: Undefined symbols error 4个答案 Why can templates only be implemented in the header file? 14个答案 我正在尝试为gcc和g创建一个库 .我在那里使用了模板类来进行c . 运行 make 命令后,库liba....
  • 0 votes
     answers
     views

    运行可执行文件时找不到共享库,即使共享库存在于指定的路径中

    我试图在Ubuntu 16.04中运行可执行文件 . 但它给了我以下错误 . error while loading shared libraries: libswscale.so.3: cannot open shared object file: No such file or directory :~/ga-projects/gaminganywhere-master/bin$ ldconf...
  • 8 votes
     answers
     views

    共享库构造函数未执行

    我有以下问题 . 我写了一个共享库 #include <stdio.h> #include <stdlib.h> static void __attribute__ ((constructor)) test_init(void); static void __attribute__ ((destructor)) test_clean(void); /* Initia...
  • 8 votes
     answers
     views

    如何使用内置rpath构建和安装gcc?

    我正在尝试在/ usr / local中构建和安装我自己的gcc 4.7.2,以代替/ usr中的gcc 4.4.6 . (这是在CentOS 6.3上 . ) gcc生成可执行文件和动态库,动态链接到自己的动态库,例如: libstdc .so . 如何构建和安装gcc,以便生成的二进制文件自动获得链接器-rpath选项(-rpath / usr / local / lib64),该选项导致/...
  • 18 votes
     answers
     views

    在链接时使gcc更喜欢静态库到共享对象?

    当使用 -l 选项(例如 -lfoo )链接库时,如果找到两者,gcc将更喜欢共享对象(更喜欢 libfoo.so 到 libfoo.a ) . 有没有办法让gcc更喜欢静态库,如果两者都找到了? 我正在尝试解决的问题如下:我正在为应用程序(飞行模拟器称为X-Plane)创建一个插件,具有以下约束: 该插件将采用32位共享对象的形式,即使在64位系统上运行也是如此 运行环境没有提供一种方便...
  • 1 votes
     answers
     views

    ld失败:libcrypto.a失败重定位R_X86_64_32对`.rodata.str1.1'在创建共享对象时不能使用;用-fPIC重新编译

    我越来越 链接共享对象rubyeventmachine.so / usr / bin / ld:/usr/local/lib/libcrypto.a(bio_lib.o):在共享时不能使用针对`.rodata.str1.1'的重定位R_X86_64_32宾语;用-fPIC /usr/local/lib/libcrypto.a重新编译:无法读取符号:错误值collect2:ld返回1退出状态mak...
  • 2 votes
     answers
     views

    汇编编码strdup . Malloc在共享库中调用

    我有一个问题,我在调用malloc时无法编译我的strdup . 当我不打电话给malloc时,它会完美地编译我的共享库,所以如果有人可以帮助我那就太棒了! 这是我的代码: BITS 64 DEFAULT REL global my_strdup:function extern malloc my_strdup: [...] call malloc ...
  • 0 votes
     answers
     views

    制作共享对象时不能使用;用-fPIC重新编译

    我尝试安装库但运行make后出现以下错误 . 如何用旗帜重新编译? make目标pwrutils的扫描依赖关系链接CXX共享库libpwrutils.so / usr / bin / ld:/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu /libboost_system.a(error_code.o):在创建共享对象时,不能...
  • 0 votes
     answers
     views

    创建AES C文件的共享库时链接出错[重复]

    这个问题在这里已有答案: Linking OpenSSL libraries to a program 3个答案 创建AES共享库时遇到错误 . 使用以下命令: gcc -Wall Test1.c x64 / libSESDAPI.a -fPIC -lssl -lcrypto gcc -shared -o libfile.so a.out -nostartfiles 我收到以下错误: / us...
  • -1 votes
     answers
     views

    linux C . 链接共享对象和主要

    我用C编写简单的测试程序,它会告诉 Hello, Alex 并退出 . 这是代码: main.cpp : #include <iostream> #include <dlfcn.h> int main() { void* descriptor = dlopen("dll.so", RTLD_LAZY); std::string (*f...
  • 1 votes
     answers
     views

    当我创建共享库时,会发生错误

    我创建了一个共享库,如下所示: gcc -c output.c gcc -shared -fPIC -o liboutput.so output.o 当output.c如下所示,它可以工作 . //#include "output.h" #include <stdio.h> int output(const char* st) { return...

热门问题