需要编个动态库,但是在动态库中需要知道自身的文件名称和路径. 怎样实现? 谢谢
可以用系统程序“ldd”测试一下,看自己究竟链接了哪些库,库的路径也能同时显示。下面这个例子也许对您有启发:
[/home/campus/src/db_campus]# ldd -d ./tester libcampus_dbc.so => /usr/lib/libcampus_dbc.so (0xf6fd1000) libpq.so.3 => /usr/lib/libpq.so.3 (0x00505000) libpgsql.so => not found libc.so.6 => /lib/tls/libc.so.6 (0x0039f000) libcampus_pub.so => /usr/lib/libcampus_pub.so (0xf6f1a000) libpgsql.so => not found libssl.so.4 => /lib/libssl.so.4 (0x00bd2000) libcrypto.so.4 => /lib/libcrypto.so.4 (0x00986000) libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00909000) libcom_err.so.2 => /lib/libcom_err.so.2 (0x008e1000) libcrypt.so.1 => /lib/libcrypt.so.1 (0x00c65000) libresolv.so.2 => /lib/libresolv.so.2 (0x00616000) libnsl.so.1 => /lib/libnsl.so.1 (0x00ba6000) libpthread.so.0 => /lib/tls/libpthread.so.0 (0x005de000) /lib/ld-linux.so.2 (0x00382000) libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00970000) libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x008e6000) libdl.so.2 => /lib/libdl.so.2 (0x004ed000) libz.so.1 => /usr/lib/libz.so.1 (0x004f3000)[/home/campus/src/db_campus]#
什么样的需求会要求这样做?好象没有必要吧。
原帖由 jkimber 于 2006-10-28 18:14 发表需要编个动态库,但是在动态库中需要知道自身的文件名称和路径. 怎样实现? 谢谢
>>>>>>getcwd可以获得文件路径,前提是执行目录不能被更改。>>对于主程序获取文件名称只想起来用argv[0]获取,其他的方法没有想到。>>>>
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
暂无简介
文章 0 评论 0
接受
发布评论
评论(3)
可以用系统程序“ldd”测试一下,看自己究竟链接了哪些库,库的路径也能同时显示。下面这个例子也许对您有启发:
[/home/campus/src/db_campus]# ldd -d ./tester
libcampus_dbc.so => /usr/lib/libcampus_dbc.so (0xf6fd1000)
libpq.so.3 => /usr/lib/libpq.so.3 (0x00505000)
libpgsql.so => not found
libc.so.6 => /lib/tls/libc.so.6 (0x0039f000)
libcampus_pub.so => /usr/lib/libcampus_pub.so (0xf6f1a000)
libpgsql.so => not found
libssl.so.4 => /lib/libssl.so.4 (0x00bd2000)
libcrypto.so.4 => /lib/libcrypto.so.4 (0x00986000)
libkrb5.so.3 => /usr/lib/libkrb5.so.3 (0x00909000)
libcom_err.so.2 => /lib/libcom_err.so.2 (0x008e1000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0x00c65000)
libresolv.so.2 => /lib/libresolv.so.2 (0x00616000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00ba6000)
libpthread.so.0 => /lib/tls/libpthread.so.0 (0x005de000)
/lib/ld-linux.so.2 (0x00382000)
libgssapi_krb5.so.2 => /usr/lib/libgssapi_krb5.so.2 (0x00970000)
libk5crypto.so.3 => /usr/lib/libk5crypto.so.3 (0x008e6000)
libdl.so.2 => /lib/libdl.so.2 (0x004ed000)
libz.so.1 => /usr/lib/libz.so.1 (0x004f3000)
[/home/campus/src/db_campus]#
什么样的需求会要求这样做?好象没有必要吧。
>>
>>
>>getcwd可以获得文件路径,前提是执行目录不能被更改。
>>对于主程序获取文件名称只想起来用argv[0]获取,其他的方法没有想到。
>>
>>