5月6日:gcc编译选项

一、GCC 动态库处理

  1. ldd XX ###编译通过,但运行时发现不了动态库
image.png

编译时的路径: -L 库路径
二进制可执行程序: -Wl -rpath=目录

image.png

image.png

image.png
  1. 动态调用
image.png

image.png
typedef  int func_m(void);   //定义函数类型,即要在动态库中获取的--函数名。
static int sys_libso_operation(char * libso_name, char * function_name)
{
    void *handle;
    char *error;
    
        //打开动态库句柄
    handle = dlopen(libso_name,RTLD_NOW);
    if (!handle) {
        printf("!!!!!!!![%s]\n", dlerror());
        return 0;
    }

        //获取动态库中函数的-----函数指针
    func_m * func = dlsym(handle,function_name));
    if ((error = dlerror()) != NULL) {
        printf("!!!!!!!![%s]\n", dlerror());
        return 0;
    }
        
        //通过函数指针运行函数
    func();

        //关闭动态库句柄
    dlclose(handle);
    return 0;
}

 gcc -fPIC -shared XX.c -o libxxx.so 

二.volatile


image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容