Questions tagged «static-linking»


16
静态链接与动态链接
在某些情况下,是否有任何令人信服的性能原因选择静态链接而不是动态链接?我已经听过或阅读了以下内容,但是我对这个主题的了解不足,无法保证其准确性。 1)静态链接和动态链接之间的运行时性能差异通常可以忽略不计。 2)(1)如果使用使用概要文件数据来优化程序热路径的性能分析编译器,则不正确,因为使用静态链接,编译器可以同时优化您的代码和库代码。使用动态链接只能优化您的代码。如果大部分时间都花在运行库代码上,那将有很大的不同。否则,(1)仍然适用。


4
在C ++中的头文件中声明的情况下在源文件中定义静态方法
我在使用C ++中的静态方法时遇到一些麻烦 示例.h: class IC_Utility { public: IC_Utility(); ~IC_Utility(); std::string CP_PStringToString( const unsigned char *outString ); void CP_StringToPString( std::string& inString, unsigned char *outString, short inMaxLength ); static void CP_StringToPString( std::string& inString, unsigned char *outString); void CP_StringToPString( FxString& inString, FxUChar *outString); }; 示例.cpp: static void IC_Utility::CP_StringToPString(std::string& inString, unsigned char *outString) { …


5
iOS静态和动态框架说明
我必须承认,随着iOS 8的发布,我对iOS中的动态和静态框架有些困惑。 我正在寻找一种分发我创建的库的方法,并且我需要支持iOS 7及更高版本。(注意:这将是专有框架。我无法使用可可豆荚,也无法分发源代码)。这是我已经知道的: iOS 8引入了适用于iOS的“嵌入式框架”,但据我所知,它们不适用于iOS 7,仅适用于iOS 8及更高版本。 我可以选择将我的库分发为静态库(.a文件),也可以分发标头。我知道这是处理这种情况的常用方法,但是我想找到比这更简单的方法(如果可能的话,还要捆绑一些资源)。 我还发现iOS 7不支持动态.framework库(仅静态),因为它不支持动态链接。但是iOS 8以及静态链接都可以。 这是我对这些信息的疑问: 我看到我可以通过将Mach-O类型更改为“静态库”来创建一个.framework目标并将其设为静态。这足以支持iOS 7而不会出现任何问题,并且还可以将我的库作为.framework bundle?如果是,为什么Internet上的许多资源表明,iOS 8中的“嵌入式框架”这么重要呢? 是否需要像我对其他任何应用程序所做的那样对.framework进行代码签名? 如果我需要在.framework文件中包含其他资源(如核心数据或图像)怎么办?我需要为此制作一个单独的.bundle文件吗?

1
GPL / LGPL和静态链接
关闭。此问题不符合堆栈溢出准则。它当前不接受答案。 想改善这个问题吗?更新问题,使其成为Stack Overflow的主题。 5年前关闭。 改善这个问题 我在网上阅读到以下组合存在: 专有源代码+ GPL源代码-> GPL源代码(所有代码必须在GPL下发布) 专有源代码+ LGPL源代码->专有源代码(所有代码均为专有) 现在,静态/动态链接GPL和LGPL代码如何与以上组合结合使用?

19
为什么链接器将静态库与错误链接?的iOS
将混合语言框架链接到项目时出现问题。 1)我创建了一个包含Swift和Objective-C类的框架。 2)主要逻辑存储在Swift文件中。例如,该类具有调用NSLog(“ Swift log was created”)的方法。 3)Objective-C文件具有一个类,该类具有一个方法,在该方法中,我创建了Swift类的实例并调用Swift-log方法。 4)我将此框架链接到我的Objective-C项目,可以调用该项目中需要的所有内容,但是当我要构建此项目时,会收到错误消息“ linker command failed with exit code 1 (use -v to see invocation)” 和警告: ld: warning: Could not find auto-linked library 'swiftFoundation' ld: warning: Could not find auto-linked library 'swiftDarwin' ld: warning: Could not find auto-linked library 'swiftCoreFoundation' ld: warning: Could not …

6
Linux静态链接已死?
实际上,Linux上的-static gcc标志现在不起作用。让我从GNU libc常见问题中引用: 2.22。即使是静态链接程序也需要一些共享库,这对我来说是不可接受的。我能做什么? {AJ} NSS(有关详细信息,请键入`info libc“名称服务开关”“)在没有共享库的情况下无法正常工作。NSS只需更改一个配置文件(/etc/nsswitch.conf)即可使用不同的服务(例如NIS,文件,db,hesiod),而无需重新链接任何程序。唯一的缺点是现在静态库需要访问共享库。这由GNU C库透明地处理。 一种解决方案是使用--enable-static-nss配置glibc。在这种情况下,您可以创建仅使用服务dns和文件的静态二进制文件(为此更改/etc/nsswitch.conf)。您需要明确链接所有这些服务。例如: gcc -static test-netdb.c -o test-netdb \ -Wl,--start-group -lc -lnss_files -lnss_dns -lresolv -Wl,--end-group 这种方法的问题在于,必须将使用NSS例程的每个静态程序链接到所有这些库。 {UD}实际上,无法再说使用此选项编译的libc正在使用NSS。不再有开关。因此,强烈 建议不要使用--enable-static-nss,因为这会使系统上程序的行为不一致。 关于这一事实,现在是否有任何合理的方法可以在Linux上创建功能齐全的静态构建,或者静态链接在Linux上完全无效?我的意思是静态构建: 行为与动态构建完全相同(行为不一致的static-nss是邪恶的!); 适用于合理的glibc环境和Linux版本;
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.