在Windows上链接-R和-rpath开关
我在Windows XP上使用gcc编译器(MinGW)。我创建了一个.dll库
libdir.dll
而不是我试图构建一个使用该库的程序。
我不想将.dll文件放入System或System32文件夹,也不想在PATH变量中设置它的路径,我想要的是将该信息提供给程序本身。
我知道有一个-R
和-rpath
开关可用,所以我要把它与其中一个连接起来。
第一个是:
gcc -L / path / to / lib -Wl,-rpath,/ path / to / lib main.o -ldir -o prog
比-R:
gcc -L / path / to / lib -Wl,-R,/ path / to / lib main.o -ldir -o prog
这成功链接到prog
但是当我启动程序时Windows打印出无法找到的消息libdir.dll
。
所以我的问题是出了什么问题,为什么即使我使用合适的开关,在运行时也不知道libdir.dll
的路径?
假设我有prog1和prog2,每个都包含他们自己的libdir.dll副本,并且他们两个都开始运行同时在库中加载代码。在内存中发生的是有两个副本加载或链接器指出有副本并将其用于两个程序?
第二个问题是关于如何加载库(任何操作系统)。链接器是否总是加载整个库或只需加载所需的部分?例如,如果程序引用函数foo()
在库中,链接器是否只将该函数或整个库映射到内存中?
没有找到相关结果
已邀请:
2 个回复
芳菱挨啡
苦诫