腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
视频
沙龙
1
回答
静态库-调试还是发布?
、
、
、
我来自Windows,并与gcc一起生成了一个C++静态库(libMyLib.a)。 在Windows中,您实际上可以生成带有调试信息和未优化的调试静态库(.lib);然后,您还可以生成一个不需要调试信息的发布静态库(.lib),并且可以静态地链接到最终产品中。 我做到了 $ objdump --syms libMyLib.a | grep "debug" 有一堆线像 0000000000002ea0 l F .text 00000000000001fc _ZN12_GLOBAL__N_121debugMyFunction2Ejllj 因为有' debug‘后
浏览 0
提问于2016-01-06
得票数 1
回答已采纳
1
回答
如何在linux可执行文件中使用静态库
、
、
、
我有一个在Linux上编译的项目。当我对可执行文件运行ldd命令时,我得到了以下内容: libevent_core-2.1.so.6 => /usr/lib/x86_64-linux-gnu/libevent_core-2.1.so.6 (0x00007fca87a5e000) libevent_pthreads-2.1.so.6 => /usr/lib/x86_64-linux-gnu/libevent_pthreads-2.1.so.6 (0x00007fca8785b000) 现在,我想让这些库编译为静态库。我怎么能这么做? 这是我的make文件库: LIBS = -l
浏览 3
提问于2018-10-03
得票数 0
回答已采纳
1
回答
使用qmake开发跨平台C++静态库(通过Mac上的Qt创建者IDE )
、
、
、
我正在开发一个库,它可以在所有平台(linux、mac和windows)上工作。这个库基于Qt,它是一个跨平台的用户界面库。我正在用Mac开发这个库。我开发的当前构建是一个静态库(.a),它可以在Linux和Mac上工作。这个.a library是否也适用于Windows (假设使用Visual ),还是必须为此创建一个单独的库类型?如果是,我如何从我的Mac创建windows静态库?关于您的信息,我正在使用QtCreator IDE创建静态库。一个简单的指南/代码示例/有用的链接将是非常有用的。
浏览 7
提问于2011-11-12
得票数 1
1
回答
ALSA库与ARM的交叉编译
、
、
、
我试图为Debian上安装的NXP(飞思卡尔) imx6开发一个"C“应用程序。我的主机是Ubuntu16.04。我正在使用eclipse作为IDE,直到今天我都可以跨编译。我使用arm-linux-gnueabihf-gcc作为编译器,使用arm-linux-gnueabihf-ld作为链接器。我在链接器参数中添加了-lasound选项,但仍然无法构建应用程序。我犯了个错误 arm-linux-gnueabihf-ld:找不到-lasound 我想我的Ubuntu (主机)机器上没有libasound.so文件,我的链接器无法链接到我的应用程序库。 我将libasound.s
浏览 17
提问于2017-01-26
得票数 1
3
回答
在编译时链接到共享对象
、
、
、
、
在Windows中,许多.dlls都带有一个对应静态.lib。我的理解是,.lib的对应物基本上包含LoadProcAddress调用,这样程序员就不必自己去做了。从本质上讲,这是一种节省时间的方法。当我切换到Linux时,我假设情况是一样的,用.so替换.dll,用.a替换.lib,但我发现这是错误的,我不知道发生了什么: 我使用的是一个.a/.so对的库。我是在链接.a,但是当我在生成的二进制文件上执行ldd时,它不包含对相应.so文件的引用。因此,我尝试链接到.so文件,令我惊讶的是,这起作用了。此外,当我对生成的二进制文件执行ldd时,.so文件出现了。 所以,我真的很困惑到底是怎么回
浏览 0
提问于2011-02-12
得票数 2
1
回答
静态库,链接到共享库。
、
、
、
、
我刚开始使用Eclipse并开发一个将在Linux上运行的应用程序(在ARM处理器上)。我想使用OpenCV库(.so文件)。我的应用程序由链接到多个静态库的可执行文件组成。这个链接是在IDE设置(ARM linux g++链接器设置)中配置的。我需要在这些静态库中使用openCV。openCV库包括在中安装的.so文件。是否可以从我的静态库中链接到这些库?我不知道该怎么安排。显然,静态库项目中没有g++链接器设置。谢谢你的帮助。
浏览 3
提问于2014-07-14
得票数 0
回答已采纳
1
回答
是否可以静态地将一些库(但不是所有库)链接到libtool?
、
我正在进行一个使用autoconf、automake和libtool构建的项目。该项目以二进制和源两种形式分发。 在Linux上,默认情况下构建脚本动态链接到所有库。这是有意义的,因为Linux用户可以依靠他们发行版的包管理器来处理依赖关系。 在Windows上,默认情况下,构建脚本链接到所有库,静态地使用libtool的-all-static选项。这是有意义的,因为Windows没有提供任何依赖项,并且能够分发包含所有依赖项的单个二进制文件,而不是浪费大量的DLL,这是很有帮助的。 在OSX上,一些依赖项是由操作系统提供的,而有些则不是。因此,动态地链接到OS提供的库和静态地链接到其他库将是
浏览 2
提问于2009-12-22
得票数 6
回答已采纳
1
回答
wxWIdgets编译/运行问题
我想知道,我是否可以在一台Linux计算机上编译wxWidgets应用程序,并在另一台没有安装wxWidgets的Linux计算机上运行二进制文件?如果可能,我该怎么做呢?在这两台机器上,Ubuntu18.04和wxWidgets版本都是3.1.2谢谢。
浏览 38
提问于2019-02-02
得票数 0
1
回答
如何安装和使用libtool共享库(.lo文件)?
、
、
、
那么,在我运行libtool并从我的库源文件中取出一个libfoo.lo和foo.o文件之后,如何将libfoo.lo文件转换为一个普通的Linux共享库,比如libfoo.so.1.0.0,这样我就可以在目标系统上安装并链接到它?
浏览 6
提问于2009-12-31
得票数 4
回答已采纳
1
回答
在Os 2005/08和Mac env中编译LibXML2
、
、
、
、
我正在编写一个C应用程序,它使用LibXML2进行XML解析和验证。在Linux中编译它是相当容易的,尽管在Windows和Mac中编译它似乎很困难。 对于Windows,我使用的是on 2005/08(基本上有两个副本,因此使用起来会更容易)。我需要与Libxml2和其他库一起编译我的应用程序。最重要的是,我需要用MSVCRT.DLL来编译它,而不是用其他的CRT库,比如MSVCRT71.dll等等。 我也需要为Mac Os构建这个。 请给我建议,我该怎么做?
浏览 2
提问于2011-04-26
得票数 0
1
回答
如何从共享生成静态库(.a)进行动态链接
、
、
、
我有一个没有源代码的共享库librun.so,但是我有一个可以使用它的SDK。 如何生成静态库( library un.a),只从librun.so导出函数,以便动态链接我的库libapp.so和librun.so 在windows上是这样的,但是在Linux上是如何做到的呢? 垃圾桶/exports run.dll 用导出函数制作run.def lib /def:run.def /out:run.lib /machine:x86
浏览 3
提问于2020-10-28
得票数 1
回答已采纳
2
回答
Gcc隐藏来自包含静态库的符号的可见性
、
、
、
、
我有: 一个共享库,比如libShared.so,它包含一个类Bar和一个方法int Bar::do(int d) const 一个静态库,比如libStatic.a,它包含一个类Foo,带有一个方法int Foo::act(int a) const。 Bar的代码如下所示: //Bar.h class __attribute__ ((visibility ("default"))) Bar { private: __attribute__ ((visibility ("hidden"))) int privateMethod(in
浏览 9
提问于2015-07-28
得票数 7
回答已采纳
4
回答
我需要静态库来静态链接吗?
、
、
、
在'C',Linux上, 我是否需要静态链接的静态库,或者我拥有的共享库就足够了?若否,原因为何?(它们不是包含相同的数据吗?)
浏览 1
提问于2009-06-20
得票数 10
回答已采纳
1
回答
如何规避Symbian命名约定?
、
、
、
、
我将编写一个C++库,该库既可用于Windows应用程序,也可用于Symbian。Linux不是当前的要求,但通常也应该是可能的。 出于这个原因,我想使用STL/Boost命名约定,而不是,我认为这很难习惯。 当使用Carbide.c++编译代码时,这似乎已经出现了一个问题,因为它强制执行Symbian命名约定。 我怎么才能使用“普通”的名字,同时仍然兼容Symbian呢?我首先想到的是为塞班平台有条件地重新命名-ing类名,但我担心这会导致混淆。 如果不遵守Symbian的命名约定,还会出现其他问题吗?
浏览 1
提问于2009-08-05
得票数 0
回答已采纳
1
回答
C++构建过程-库依赖关系
、
、
、
、
我有一个包含5个项目的Visual studio解决方案 应用程序库Main:A、B、C、D: static libraries Main取决于A,B。A取决于C,D。 我对构建过程的理解很脆弱。 libs单独构建很好,特别是A;我不觉得我是在将C和D与A联系起来。 为了构建主应用程序,我必须使用A、B、C和D作为输入库,即使Main只直接依赖于A、B。 现在我正试图用CMake在Linux上构建整个东西,我发现自己再次接触到了这些链接。这一次,我不想使用暴力,而是更愿意了解这是如何联系在一起的。 我应该只构建A、B、C和D作为.a静态库,并将它们全部包含在Main中吗? 如果没有C和D的符号
浏览 39
提问于2018-05-31
得票数 1
回答已采纳
1
回答
在Ubuntu18.04中为Qt生成一个独立的二进制包
、
、
、
我通过构建Qt源代码来安装Qt,以便指定一些配置参数(例如,启用MySQL数据库驱动程序)。 如何使用我的Linux配置(如 )生成一个独立的二进制包,包括Qt库和Qt?这使得我们不再需要在另一个系统中再次编译Qt源代码。
浏览 0
提问于2019-09-16
得票数 1
回答已采纳
4
回答
为什么要使用显式参数进行静态和动态链接
、
、
我主要在Windows上工作,最近我开始在Linux上工作。我有个疑问。我在Windows中使用Visual Studio作为IDE,在Linux中使用Makefile。 Windows中有两种类型库:静态库(.lib)和动态链接库(VC++)。这很明显(不是吗?)如果我链接lib文件,我使用静态链接,否则使用动态链接。 现在,当我使用g++编译器时,为什么我需要显式地提到-Bstatic/-static或Bdynamic/-dynamic标志。因为如果文件是.a文件,那么我必须使用静态-linking,如果文件是.so,则我使用动态链接。
浏览 3
提问于2012-12-24
得票数 3
回答已采纳
1
回答
编译Android NDK库
、
、
、
、
Android新手在这里。我试图创建一个基于OpenGL ES的安卓应用程序,将运行本机代码,我正在使用CMake来构建它。 现在我有了一个C++库,我需要在Android NDK代码中包含、导入和链接(.a文件)。我知道这个库需要为Android交叉编译,但是如果我只构建Linux二进制文件(.a文件),并将其链接起来,它能工作吗? 此外,C++库是使用Windows平台和CMake构建的,后者生成一个.lib(windows的静态库版本)。从Windows平台(静态lib版本的Linux )生成.a文件的最好方法是什么?
浏览 7
提问于2020-01-06
得票数 1
1
回答
如何静态链接libcurl,libssl,uuid库?
、
运行以下命令:cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_TESTING=OFF -DBUILD_ONLY="s3" -DFORCE_SHARED_CRT=OFF -DBUILD_SHARED_LIBS=OFF <aws-sdk-src>总是链接到共享的libcurl,ssl库,从(截断的) CMAKE输出中可以看到: -- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.8") -- Zlib include directo
浏览 2
提问于2017-04-24
得票数 0
1
回答
如何将文件打包到Linux和Windows的一个可执行文件中?
、
、
、
我正在用Muon在Golang上创建一个桌面应用程序(使用Ultralight而不是Chromium),并为Linux和Windows交叉构建我的应用程序。目前,该应用程序运行良好,但它需要超光速库(*.dll用于Windows,*.so用于Linux)。但是我想把我的应用程序作为单一的可执行文件分发。如何创建两个可执行文件?第一个用于Linux的文件,它应该包含用于Linux的主可执行文件,并且只包含*.so库。第二个文件应该包含用于Windows的主可执行文件,并且只包含*.dll库。我怎么能这么做? 对此有什么CLI用途吗?(例如,在gitlab CI中使用Docker ),或者我可以通
浏览 5
提问于2021-11-18
得票数 0
回答已采纳
1
回答
如何在命令提示符Windows中生成链接文件?
我想做链接文件,在那个链接文件中有更多的文件。例如,我想将几个库文件合并成一个,以便更容易编译。如果在Linux上,我使用以下命令: ar -c 在窗户里怎么样?
浏览 1
提问于2018-09-13
得票数 0
回答已采纳
1
回答
在JNI中链接静态库
、
我是JNI的新手。 我想将一个静态库(比如libFoo.a)链接到我正在创建的动态库中。这个动态库是从我的Java类调用的。 这个是可能的吗?如果是这样的话,是怎么做的? gcc -I$JAVA_DIR/include -I$JAVA_DIR/include/linux -o libXY.so -shared jni/xy.c libFoo.a
浏览 0
提问于2013-04-21
得票数 1
回答已采纳
7
回答
在Linux上使用静态链接的应用程序有什么缺点吗?
、
、
、
我在这里看到了几个关于这个主题的讨论,但我想问一下我的特殊情况: 如果我有一些我的应用程序正在使用的第三方库,我想将它们链接在一起,以省去在LD_LIBRARY等方面的麻烦,那么在Linux上,除了更大的文件大小之外,它还有什么缺点吗? 另外,是否可以只静态链接一些库,而将其他库(标准Linux库)动态链接? 谢谢。
浏览 7
提问于2009-05-19
得票数 2
3
回答
如何从共享库导出符号
、
、
、
、
我使用Windows编译器使用*.so对象代码文件(C源代码)创建了一个共享库( *.o )。 我将这个共享对象与一个应用程序(在Linux主机上使用gcc作为ARM目标)链接起来,并获得一个可执行文件,在运行时生成分段错误。(我知道我必须调试它!) 与创建共享库不同,如果我创建了一个具有相同源文件的静态库,然后链接到应用程序,然后执行应用程序,那么它可以正常工作。 所以我的问题是: 我是否需要使用某些构造在源文件中显式地导出符号(导出到应用程序的函数)或任何其他符号,以便在与应用程序链接时工作良好?什么是需要的,我该怎么做? 共享库是如何工作的?即,在创建库时,将在库中给出函数加载和
浏览 3
提问于2009-04-16
得票数 5
回答已采纳
1
回答
如何在共享库和静态库之间进行选择?
、
、
、
我试图从Linux中的SFML库中运行标准示例。我已经从Github下载了Rep.,用CMake构建并安装了它。我为静态/共享调试构建了2个库,为静态/共享版本构建了2个库。 现在的问题是,我对在终点站编译不太了解。我使用在SFML网站上找到的命令: g++ -c test.cpp g++ test.o -o sfml-app -lsfml-图形-lsfml-window -lsfml-system 这很管用。我可以通过./ SFML和双击运行我的sfml应用程序。但是其他使用Linux的人(没有安装SFML)却不能。我认为这是因为编译器不使用静态库。当然-他怎么可能?它没有写在命令里
浏览 1
提问于2013-07-15
得票数 0
回答已采纳
1
回答
你能在linux中编译/运行masm吗?
、
、
、
这听起来是个愚蠢的问题,但我不知道还能怎么问:我正在尝试做一个python库,它将测试代码并返回一个结果,它碰巧在linux和windows上都能工作。我能想到的唯一有效做CPUID的方法是在汇编语言中编程,那么,有没有一种方法可以测试在独立于操作系统的机器上运行的程序的成功或失败,并将其构建到python 中,或者更确切地说,是一种构建独立于操作系统的python库的方法? Python文档并不清楚这是如何工作的。我是否需要做两个库,一个windows和一个linux (我只是为了提高效率而试着做一个)?
浏览 1
提问于2016-06-29
得票数 0
2
回答
如何从可执行文件中打开bash?
、
、
、
我正在尝试从C或C++可执行文件中打开一个bash shell (在Linux中)。我尝试了这两种语言,但编译后的可执行文件超过4kb,因为进行系统调用所需的库。 我需要使可执行文件小于或等于4Kb。我该怎么做呢?
浏览 1
提问于2012-01-29
得票数 0
回答已采纳
3
回答
共享库: Windows与Linux方法
、
、
关于Windows共享库(DLL)与Linux共享库(SOs),我有一个简短的问题。 为什么在创建Windows DLL时,客户端程序也需要链接到静态库(.lib文件),而在Linux中创建的应用程序不需要链接到这样的静态库。 这和代码重定位之类的事情有什么关系吗?谢谢。
浏览 0
提问于2013-05-24
得票数 29
回答已采纳
1
回答
如何使用静态库进行编译?
、
我的应用程序编译并运行良好: g++ -shared -o myExten.so exm2.o main.o exm1.o -lphpcpp 如果我将shared更改为静态,则会得到一个错误: g++ -static -o myExten.so exm2.o main.o exm1.o -lphpcpp /usr/lib/gcc/x86_64-linux-gnu/4.9/../../../x86_64-linux-gnu/crt1.o: In _start': /build/glibc-Ir_s5K/glibc-2.19/csu/../sysdeps/x86_64/start.S
浏览 4
提问于2015-09-05
得票数 0
1
回答
我们可以在窗口上使用.so文件吗?
、
、
、
我需要在windows和linux平台上为我的c++代码库动态创建和链接库。我知道DLL格式适用于windows,而.so则用于linux平台。但是我读到.so也可以在windows平台上链接。我的问题是,我能否创建一个通用动态库(.so)来在windows和linux上运行我的应用程序?如果是,怎么做?
浏览 3
提问于2016-01-18
得票数 1
回答已采纳
6
回答
如何在VC++中添加用于编译的外部库?
、
、
、
我使用过几个可视化C++编译器(VC97,VC2005,VC2008),但我还没有找到一种清晰的方法来将外部库添加到我的构建中。我来自Java背景,在Java中,库就是一切! 通过在我的Linux box上编译开源项目,我了解到似乎需要包含该库的所有源代码,除了那些.so文件。 我也听说过.lib静态库和.dll动态库,但我仍然不能完全确定如何将它们添加到构建中并使它们工作。我们该怎么做呢?
浏览 0
提问于2008-10-17
得票数 16
回答已采纳
4
回答
如何在C/C++中使用与OpenSSL的静态链接
、
、
、
、
我在C和C++中用Openssl编写了简单的应用程序。我把它们编成这样: gcc openssltest.c -o openssltest -lcrypto g++ openssltest.cpp -o openssltest -lcrypto 只要安装了Openssl,就可以了。 我想编译它,以便在没有Openssl安装端(类似linux的OS)的操作系统上运行它们。我试过这个: gcc -c openssltest.c -lcrypto -static gcc openssltest.o -o openssltest -lcrypto -static C++也是如此: g++ -c ope
浏览 8
提问于2013-08-12
得票数 15
2
回答
生成DLL时.lib文件包含什么?
、
我正在生成.dll在visual 2010。.lib、.dll、.pdb文件正在输出文件夹中生成。 为什么是.lib (它是静态库?)与dll一起泛化,它的用途是什么,它实际上包含了什么? (在linux和.so中,它不能有任何其他文件,但是为什么在Windows中)。 这个.pdb文件是什么,它包含什么,它将如何有用? )事先:)
浏览 4
提问于2014-12-23
得票数 1
回答已采纳
6
回答
为什么运行库是编译器选项而不是链接器选项?
、
、
、
我正在尝试使用visual 2005构建一个C/C++静态库。由于选择运行时库是一种编译选项,所以我不得不构建我的库的四个变体,其中一个针对运行时库的每个变种: /MT -静态运行库 /MD - DLL运行库 /MTd -调试静态运行库 /MDd -调试DLL运行库 这些是编译器选项,而不是链接器选项。从Linux的背景来看,这似乎很奇怪。不同的运行库是否有不同的调用约定?为什么不能在链接时解析不同的运行时库,即当我链接使用我的静态库的应用程序时?
浏览 3
提问于2009-02-06
得票数 13
回答已采纳
1
回答
如何创建在每个发行版上运行的静态二进制文件?
、
、
、
一些linux应用程序,如supertuxkart或regnum online都有静态二进制文件,下载后即可运行,无需安装任何共享库。在每个发行版上。我怎么才能做这样的应用呢?
浏览 1
提问于2013-02-13
得票数 22
回答已采纳
1
回答
使用-L如何影响链接器?
、
、
、
、
我在Linux上很新,所以也许这是一个简单的问题。 问题是:在没有附加库的情况下,添加-L/path如何影响链接器? 我的问题是: 我正在尝试建立一个交叉编译工具链,其中包含两个第三方库。 我使用的是linaro arm-linux-gnueabihf-raspbian链(目标是raspberry pi),它似乎工作正常。 我的一个模块不需要任何链接库,它编译良好并在目标上运行。 尝试链接我的库的那个会编译,但是经过一段时间的思考之后,它就会崩溃,不再使用消息链接了。 arm-linux-gnueabihf-gcc foo1.o foo2.o foo3.o ... foo12.o foo13.
浏览 2
提问于2015-06-03
得票数 1
回答已采纳
1
回答
基于dlopen的Android与动态加载库
、
、
、
我希望从外部文件目录动态加载共享库。 我创建库并在linux上进行测试,它可以工作。编译: gcc -fPIC -shared -静态-libstdc++-静态-libgcc test_lib.cpp constructor.cpp -o test.so 但是当我在android中使用它时,我得到了运行时错误: dlopen failed:库"libc.so.6“未找到。 我怎么能解决呢?我用仿真器
浏览 3
提问于2016-06-02
得票数 4
回答已采纳
1
回答
带有静态链接boost库的arm交叉编译
、
、
、
、
我所拥有的: 一个使用boost库的c++项目 该项目是使用cmake和链接动态增强构建的。 一种带有x64的linux机器 带有arm处理器和linux的开发板 我想要的: 一个CMake项目执行以下操作: 一个用于x64体系结构的构建(用于gtest和本地开发) arm架构的另一个构建 带有静态链接boost库的 这有可能吗?如果有,怎么做? 主要问题是告诉cmake,对于第二个构建,它应该使用另一个(这次是arm)预编译的boost库来链接。不知道该怎么做。
浏览 2
提问于2013-12-28
得票数 1
1
回答
插件和共享对象库
、
、
据我所知,插件是具有特定功能的组件,并加载以供应用程序使用。 linux中的共享对象库(.so)和windows中的.dlls是由应用程序在运行时加载的库。 我想知道如果.dll / .so总是插件会怎么样。所有的插件都是.dll / .sos吗?
浏览 1
提问于2012-11-18
得票数 3
回答已采纳
1
回答
在Visual 2017的Linux项目中使用静态库
、
我在VS 2017 Community中有一个Linux项目。该项目包括一个动态.so文件。到目前为止还有效。现在我想静态地将这个库链接为一个.a文件。如何在项目设置中实现这一点?我什么也没发现。对于g ++,-static或-Bstatic应该在命令行的-llibname前面。在链接器->所有选项->附加选项下的项目设置中,我有“-(B)静态-llibname”。但是,-(B)静态不在生成的命令行中,这是行不通的。有人知道它是怎么工作的吗?
浏览 0
提问于2018-03-16
得票数 0
1
回答
如何让cmake将D参数传递给ar,以便可重复构建静态库
、
、
我的项目使用CMake从相同的C++代码构建静态库和动态库。动态库文件(.so)在重建时保持不变,但静态库文件(.a)在每次重建时都会更改。我开始理解这是因为ar工具的行为,我需要传递D参数来创建确定性输出。 我发现了一个cmake变量CMAKE_AR,它指向我机器上的/usr/bin/ar。编译输出显示执行的命令是:/usr/bin/ar qc libfoo.a file1.o file2.o ...。 在ar文档中,我应该将上面的调用更改为/usr/bin/ar qcD ...以实现确定性输出。 我如何使用CMake来实现这一点? 我在Linux上,需要一个与CMake >= v3.
浏览 42
提问于2021-06-02
得票数 0
1
回答
NetBeans创建静态库c++
、
、
、
我已经在C++中有了一个项目,我想为这个项目创建一个静态库。我通过拖放方式将NetBeans my C++项目放入其中。 现在,我如何为这个项目创建一个静态库? 我在Linux中有8.2版本的NetBeans
浏览 2
提问于2017-10-03
得票数 0
2
回答
如何使用“静态链接”和“动态链接”与gcc和Visual构建C/C++程序?
、
、
、
、
库可以通过两种方式在应用程序中使用: Statically-linkedDynamically-linked 但是如何使用Visual (windows)和GCC来实现这一点呢? 我知道图书馆仅以以下4种方式分发: windows的Sourceheader-only libraries*.lib文件。*.a用于linux*.dll (windows)和*.so (Linux)。 源发行版刚刚编译。“仅标头库”只不过是一个源发行版。 现在,如果所需的库是以*.lib表单分发的。为了使用它。 在Visual Stuido上: 我们将包含标题(*.h)的目录路径添加到配置属性>常规>附加
浏览 6
提问于2010-02-11
得票数 3
7
回答
库和可执行文件的大小
、
我在windows上使用MSVC创建了一个静态库*.lib。库的大小是70 is。然后我有一个连接这个库的应用程序。但是现在最终可执行文件(*.exe)的大小是29 of,小于库。我想知道的是: 由于库是静态链接的,我认为它应该直接添加到可执行文件的大小,而最终的exe大小应该更多吗?windows exe格式也会对二进制数据进行压缩吗? 对于linux系统来说,这是如何实现的,即linux上库的大小(*.a/*..la文件)与linux可执行文件(*.out)的大小有什么关系? -AD
浏览 9
提问于2008-12-16
得票数 11
回答已采纳
3
回答
如何剥离Qt库以删除应用程序未使用的内容?
、
、
、
、
我正在通过编译后的Qt库发布一个独立的Linux应用程序。 有没有一个工具可以扫描我的源代码,看看我的应用程序使用哪些类/方法,然后它会从Qt源代码中提取出不必要的/未使用的东西,并编译为我的应用程序量身定制的Qt库,而不会有任何额外的膨胀?当然,这是最好的情况。但是,有什么最接近的现有解决方案可以让我的Linux独立应用程序与编译后的qt库尽可能的精简呢?
浏览 2
提问于2011-07-25
得票数 4
2
回答
无法将portaudio库链接为静态库
、
、
、
我需要链接一个库(portaudio)作为一个静态库。当我执行以下操作时 arm-none-linux-gnueabi-gcc -static -L/media/Data/lib/.libs -lportaudio prova.cpp 链接失败告诉我 /tmp/ccuoQi1J.o: In function `main': prova.cpp:(.text+0x190): undefined reference to `Pa_Initialize' prova.cpp:(.text+0x1bc): undefined reference to `Pa_GetDeviceCoun
浏览 3
提问于2012-04-03
得票数 2
2
回答
静态库链接两次
我有以下设置: 静态库 链接到(1.)的动态库。 链接到(1.)的可执行文件。和(2.) 来自from静态库的代码现在被复制并呈现在动态库和可执行文件中。 问题: 数据(全局变量、静态类成员)是否也重复,可执行文件和dll是否看到相同的数据? Linux和Windows之间有什么区别吗? 你怎么解决这个问题? 编辑: 谢谢你的回答,我现在可以准确地解释我的情况了。 静态库没有导出/导入标志。动态图书馆有自己的符号导出。 Windows: 动态库有静态库的text+data段的副本。可执行程序不知道,动态库已经链接了静态库,因为静态库符号的非从外部可见。 Linux: 动态库
浏览 6
提问于2015-07-03
得票数 9
回答已采纳
1
回答
#在多个.cpp中包含标准文件,而在预编译头中包含它会影响可执行文件的大小?
、
、
、
在MS编译器中:包括标准库头,如<vector>或<iostream>。如果在某些.cpp文件中包含了多个二进制文件,而不是将其包含在预编译的头中(最终将其包含在项目中的所有这些和所有其他.cpp文件中),那么这些二进制文件的大小会有所不同吗? 对于非标准库的相同问题包括。包含静态库的自定义标头。(如果它取决于在这些头/库中定义的数据大小,那么是的,假设有一些定义。) gcc/Linux环境如何?gcc有没有预编好头的概念?(如果不是,只考虑一些包含在所有.cpp文件中的公共头)
浏览 3
提问于2016-11-29
得票数 0
回答已采纳
1
回答
gcc 7.3.0中找不到动态库符号
、
我们的C++应用程序,运行在Linux上,并与gcc一起编译,将动态库加载为“plugins”。该代码已建立良好,运行良好,gcc 5.3.1。但是,使用gcc 7.3.0,库加载在运行时失败。我们得到“符号未被发现”的错误,例如: Failed to load <snip>/solibs/_gnuRelease/libLink.so dlerror = <snip>: undefined symbol: _ZN24ChannelSelection7INVALIDE ( ChannelSelection::INVALID ) Failed to load <sni
浏览 0
提问于2018-12-06
得票数 1
回答已采纳
2
回答
安装后如何管理入口处?
、
、
、
我用这篇文章作为参考,将我的入口安装在azure的云上。 但是现在我有一些关于它的问题,如何管理它,比如:在这个步骤中,我安装了我的nginx入口: helm install stable/nginx-ingress \ --namespace ingress-basic \ --set controller.replicaCount=2 \ --set controller.nodeSelector."beta\.kubernetes\.io/os"=linux \ --set defaultBackend.nodeSelector."
浏览 4
提问于2019-11-01
得票数 0
回答已采纳
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
C+程序编译之谜(二)——隐藏源码,动态和静态链接库的秘密
探索静态库与动态库的“奥秘”
go语言静态库的编译和使用
PHP7之静态库的扩展封装
怎么给 Python写C 扩展
热门
标签
更多标签
云服务器
ICP备案
对象存储
实时音视频
即时通信 IM
活动推荐
运营活动
广告
关闭
领券