当前位置:首页 » 编程软件 » 编译选项shared

编译选项shared

发布时间: 2022-03-12 03:17:32

linux编译,gcc -shared这个是干啥的

编译成动态库用的。

② eclipse c/c++编译时提示 shared library load failed

http://blog.csdn.net/iaiti/article/details/39344895

③ linux 怎么编译.so文件

.so是linux用的 所以 要生成so 需要用gcc 和生成可执行文件类似,只是增加一些编译选项 命令如下 gcc SOURCE_FILES -fPIC -shared -o TARGET SOURCE_FILES可以是.c文件,也可以是经过-c编译出来的.o文件 TARGET为so文件。

④ 如何初始化一个shared

如何初始化一个shared
第一句 #pragma data_seg("Shared") 创建一个称为Shared 的新节。
第二句 int volatile g_lAppInstance =0 将 g_lAppInstance 放入Shared节中。注意此时只有将g_lAppInstance初始化,编译器才会将其放入Shared节中,否则,将放入Shared以外的节。(实际上Visual C++ 编译器提供了一个allocate 说明符,使我们可以将数据放到任何节中。)
第三句指示编译器Shared 节结束。#pragma comment(linker,"/section:Shared,RWS")
这一句,我们使编译链接器知道我们的Shared节具有读,写,共享的属性。这是我们实现互斥运行的关键。这样我们就可以在应用程序之间的多个实例之间共享g_lAppInstance 变量。
在InitInstance() 函数中加入:if(++g_lAppInstance>1) { AfxMessageBox("程序已经运行!"); return FALSE; }
以上代码的作用是在程序是开始对g_lAppInstancd 加1 ,如果发现其值大于1,那么显示Message Box ,并返回FALSE。(注意:在MFC中如果InitInstance返回FALSE,程序将不会被运行!)

⑤ matlab怎么生成动态链接库

1>首先生成目标文件,但是此时要加编译器选项-fpic和链接器选项-shared,

gcc -fpic -c add.c

gcc -fpic -c sub.c

生成中间文件add.o和sub.o

2>其次生成动态库

gcc -shared –o libtiger.so add.o sub.o

生成动态库libtiger.so,libtiger.so就是我们生成的目标动态库。我们以后使用动态库和main.c程序生成可执行程序

说明:

以上两部也可以合成一步搞定:

gcc -fpic -shared add.c sub.c -o libtiger.so

2.使用动态链接库

在编译程序时,使用动态链接库和静态库是一致的,使用”-l库名”的方式,在生成可执行文件的时候会链接库文件。

1>使用命令:

gcc -o main main.c -L ./ -ltiger

2>-L指定动态链接库的路劲,-ldtiger链接库函数tiger。-ltiger是动态库的调用规则。Linux系统下的动态库命名方式是lib*.so,而在链接时表示位-l*,*是自己命名的库名。

3>但是程序会提示如下错误

error while loading shared libraries: libtiger.so: cannot open shared object file: No such file or direct

⑥ 编译时加了-shared参数,编译没有错误,运行是没进入main函数就出现了段错误,什么原因

找个类似于objmp的反编译花激羔刻薏灸割熏公抹工具,然后会生成汇编代码,前面有地址,直接定位地址,然后往上找函数名。

⑦ 为什么使用gcc hello.c -fpie -pie -shared -o hello 编译出来

pie 选项用于编译可执行程序,而非lib

⑧ linux中的--enable-shared 什么意思

这是 configure 常用的一个参数,表示启用动态库版本。
如果你要编译一个库的源代码,可以把它编译成静态库,也可以把它编译成动态库。如果你想编译成静态库,就用 --enable-shared参数;如果你想编译成静态库,就用--enable-static参数。

⑨ 多个.c文件能编译成单个.so文件吗

可以的
一般是把多个.c文件 先分别编译成.o文件
然后再把.o文件打包成.so
也可以直接编译打包,一步完成。
命令如下
gcc SOURCE_FILES -fPIC -shared -o TARGET
SOURCE_FILES可以是.c文件,也可以是经过-c编译出来的.o文件
TARGET为so文件。
比如
gcc a.c b.c c.c d.c -fPIC -shared -o libabcd.so

⑩ 我使用CUDA编程,在内核函数中定义了_shared_float A1[40];结果编译说 identifier "_shared_" is undefine

1. 短横少写了一个。
2. 关于你说的重定义问题。这个我也碰到过。你的工程里面是不是有个main函数所在的cu文件,还有个kernel函数所在的cu文件。你把你的kernel函数所在的cu文件,右键点属性,将
exclude from build选成yes。再编译一下看看。

热点内容
安卓nba2k18什么时候出 发布:2025-05-15 04:38:42 浏览:392
王者安卓转苹果为什么显示失败 发布:2025-05-15 04:35:49 浏览:17
手机优酷缓存视频格式 发布:2025-05-15 04:13:45 浏览:209
公益电影分镜头脚本插画 发布:2025-05-15 04:08:37 浏览:961
数据压缩编码 发布:2025-05-15 03:58:44 浏览:725
java字符为空 发布:2025-05-15 03:57:11 浏览:547
速讯安卓哪里下载 发布:2025-05-15 03:55:02 浏览:48
缓存区数据读写原理 发布:2025-05-15 03:39:57 浏览:585
编译器生成的是二进制文件吗 发布:2025-05-15 03:38:42 浏览:956
运营为什么区分ios和安卓 发布:2025-05-15 03:30:02 浏览:630