请问唐先生,在qnx中如何使用动态链接库

我在程序中已经生成了my.so文件
但是不知道如何使用它?
请指教在程序中如何使用和如何编译?
多谢了

如果是要在应用程序里动态调用的,看看 dlopen(),
dlsym(), dlclose()等函数。

如果你希望直接链接到应用程序的,直接link就可以
了。用 -L -l my.so,只要你没有指定是
static link,链接程序都是先找动态库的。如果
不放心,可以在生成完应用程序后,做一个:

objdump -x myapplication | grep NEED

来检查。

我只需要直接连接动态库就行了,所以用以下命令编译的
qcc -o mod slave-example.c -lmodbu
编译通过了,但是执行mod的时候提示:memory fault (core dumped)
我开始以为是我程序的问题,但我在slave-example.c中注释掉所有的代码
还是有同样的提示。

这是什么原因呢?哪位指教!多谢了

动态库是怎么生成的?
编译是需用 -fPIC option.

gcc -Wall O3 -o libmodbus.so commun.o mbs.o mbm.o -shared

我没有看到有 -fPIC的编译选项啊?
是怎么用的呢?

You really should start use “qcc” instead of call gcc directly.
Lots of gcc compiler option is all set for you if you start from qcc.

To compile:
qcc -Vgcc_ntox86 -c -Wc,-Wall -Wc,-Wnoparentheses -shared <*.c>

To link:
qcc -Vgcc_ntox86 -shared -Wl,-hlibmodbus.so.1 -o libmodbus.so *.so

I also suggest starting use QNX make system (those nto/x86/so
directory structure). You only need to create a directory and
every thing will done for you. Besides, all the source code that
QNX going to release, will all follow that structure.

-fPIC 选项用在编译 .o 时,而不是最后联接。
gcc -fPIC -c commun.c
gcc -fPIC -c mbs.c