1.是共享图书馆和动态图书馆是一样的东西吗?
窗户只是将它们标记为.dll
,而linux将它们标记为.so
?简单图书馆问题(C++)
2.如果共享库文件包含程序使用的大量函数,何时将这些函数加载到内存中?
在程序开始时?当特定的功能被实际调用?
如果我作出这样一个图书馆:未使用
#ifndef SHARED_H
#define SHARED_H
#include <iostream>
#include <string>
namespace shared
{
void Function1(void);
void Function2(void);
void Function3(void);
void Function4(void);
void Function5(void);
void Function6(void);
...
void Function99(void);
void Function100(void);
...
}
//assume none of these functions call each other
#endif
和我的客户端程序仅调用这些功能之一,将他们的是性能降低,因为所有其他额外的功能?
并不担心编译时间..只是实际运行时间
4.是问题3的情况不同,如果我使用一个类:
#ifndef SHARED_H
#define SHARED_H
#include <iostream>
#include <string>
class Shared
{
public:
void Function1(void);
void Function2(void);
void Function3(void);
void Function4(void);
void Function5(void);
void Function6(void);
...
void Function99(void);
void Function100(void);
...
private:
protected:
};
//assume none of these functions call each other
#endif
5.我要使用制作大量对象(.o文件),然后将它们链接在一起制作我的可执行文件。 将我的所有对象(通常是类)转换为.so文件然后将它们链接在一起会更好吗?
我知道可执行文件将依赖于.so文件,与编译后可以删除对象的第一种方法不同,但是对此有何建议?
6.我有点在黑暗中约-fPIC之间-fpic
我听说-fPIC总会工作,并-fpic是目标相关的差异。
目标依赖意味着什么?如果库总是要在同一台机器上编译和使用,我可以安全地使用-fpic吗?
其中一些问题可能是微不足道的,但我想确定 有关我迄今阅读过的内容。我明白任何和 所有响应
*如果相关:使用gcc 4.6.1(Ubuntu的/ Linaro的4.6.1-9ubuntu3)
如果你有多个问题,你应该单独发布。 – Pubby