问题标签 [shared-libraries]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
shared-libraries - 基于 3rd 方库构建自己的应用程序是否常见?
不确定这个问题是否愚蠢。
但是当我做一些(小)副项目时。我总是在网上冲浪并尝试找到一些第三个图书馆(最好是免费的),然后建立自己的。
有些是控制扩展,例如文件系统浏览器树视图。其中一些库非常流行,例如 iTextSharp。有些非常小众,仅用于解析某些专有文件格式。
我只想问,你也这样吗?(为您自己的项目使用 3rd 方库?
data-structures - 在arraylist中保存堆栈
我想知道如何将堆栈保存在数组列表中?
shared-libraries - 想详细了解共享库相对于静态库的工作方式
我正在创建和链接共享库(.so)。在与他们合作时,弹出了许多问题,当我搜索它们时我找不到令人满意的答案,因此将它们放在这里。我有关于共享库的问题是:
1.) 共享库与静态库有何不同?它们的创建方式和执行方式的主要区别是什么?
2.) 如果是共享库,在什么时候将加载和运行共享库中的特定函数的地址?谁提供这些功能是加载/运行地址?
3.) 与与静态库链接的应用程序相比,与共享库链接的应用程序执行速度会慢吗?
4.) 在这两种情况下,应用程序的可执行文件大小会有所不同吗?
5.) 可以通过进入共享库中定义的函数来进行源代码级调试吗?是否需要任何额外的东西才能使这些功能对应用程序可见?
6.) 使用这两种库的优缺点是什么?
谢谢。
-广告
iphone - 验证发布版本
我的项目引用了我创建的静态 DLL。设置这些项目以确保发生相应的构建阶段。这意味着,如果我在模拟器/调试中构建,静态库将具有最新的模拟器/调试版本。我可以验证我的应用程序工作正常,除了设备/版本。有没有办法验证设备/版本?这有点像在没有任何验证的情况下把它扔给苹果。
objective-c - 如何解决未定义符号错误?
我收到此错误
引用下面的静态方法时:
MyClass 在我的应用程序项目中引用的静态库中定义。当我开始输入“[MyClass”...时,我会收到消息提示。应用程序项目知道 MyClass 存在以及在其上定义了哪些方法。然而,我得到了上述错误。注释掉这个调用允许项目无错误地构建。
在静态库中,我有一个引用库的所有 .h 文件的 .h 文件。这样,应用程序项目只需从静态库中引用一个 .h 文件。静态库项目也有一个应用程序。我用它来测试静态库。我可以很好地完成上述通话。当静态库构建了设备/调试版本并且应用程序项目构建了模拟器/调试时,我通常会看到这些类型的错误。但是,两个构建是同步的。
我知道有一个参考问题,但我不确定如何解决它。有什么建议么?
perl - 为什么 shl_load() 对于具有线程本地存储的库会失败?
Perl 中的线程默认使用自己的本地存储来存储所有变量,以尽量减少线程对现有非线程感知代码的影响。在 Perl 中,可以使用属性创建线程共享变量:
HP-UX 运行时加载程序不支持动态加载包含 (TLS) 线程本地存储的共享库。
因此,当尝试导入包含 TLS 的模块时,会报告以下错误:
所以我知道为什么我会收到一个错误我只是不清楚为什么很难用 TLS 加载一个库?
c++ - 便携式共享对象?
是否可以像 Windows 中的 DLL 一样以可移植的方式使用共享对象文件?
我想知道是否有一种方法可以为 Linux 提供一个可立即使用的编译库。就像您可以在 Windows 中编译 DLL 一样,它可以在任何其他 Windows 上使用(好的,不是任何其他的,但在大多数 Windows 上都可以)。
这在Linux中可能吗?
编辑:
我刚刚醒来并阅读了答案。有一些非常好的。
我不是想隐藏源代码。我只是想提供一个已经编译好的可以使用的库,所以没有编译经验的用户不需要自己做。
因此,我们的想法是提供一个可以在尽可能多的不同 Linux 上运行的 .so 文件。
该库是用 C++ 编写的,使用 STL 和 Boost 库。
c++ - LSB AppChecker:针对未使用库的 GCC 链接
我正在使用 LSB AppChecker 检查共享对象 (.so) 的可移植性。
它报告的问题之一是有一个外部库(libm.so.6)没有被使用,但无论如何都链接到了。
如何防止 GCC 链接到这个不需要的库?
编辑:
ldd 命令对我的共享对象的输出是:
c - 使用 GCC 在共享库中启用调试符号
我正在创建一个共享库,gcc
并怀疑共享库可能存在一些内存泄漏。要调试,我需要在创建共享库时启用调试符号。
要构建,我正在使用gcc -g ...
(-g
用于启用调试信息)
但是*.so
无论. -g
_ -g
此外,我没有从VALGRIND
.
谁能指出我的错误?