当前位置:  技术问答>linux和unix

关于so文件:为什么替换了之后没有作用?

    来源: 互联网  发布时间:2016-02-06

    本文导语:  so文件的代码以及编译如下: //mylib.h: #ifndef __PARAMDEF_H__ #define __PARAMDEF_H__ #define MYPARAM 1 #endif //mylib.c: #include "mylib.h" int getParam() {         return(MYPARAM); } 编译: gcc -c mylib.c -fPIC -shared -o /lib/libmylib.so 使...

so文件的代码以及编译如下:
//mylib.h:

#ifndef __PARAMDEF_H__
#define __PARAMDEF_H__
#define MYPARAM 1
#endif

//mylib.c:

#include "mylib.h"
int getParam()
{
        return(MYPARAM);
}

编译:
gcc -c mylib.c -fPIC -shared -o /lib/libmylib.so


使用mylib.so的程序myapp.c:
int main()
{
int i;

i = getParam();
printf("param=%dn");
}

编译:
gcc -c -L -lmylib myapp.c -o myapp


现在的问题是这样:
我编译好之后执行,结果是param=1;
然后我修改mylib.h,将MYPARAM改为0,再编译mylib.so,这个时候再执行myapp,结果还是param=1;
也就是说,替换mylib.so没有作用,要重新编译myapp结果才是param=0。

我想问的是:so文件能不能像我设想的那样使用,也就是说,使用宏定义不同的so文件,调用的函数返回不同的结果?

谢谢!

|
祝贺dai_weitao(疯狂Linux C++社区) 穿五裤衩了,散点分吧!

|
对, 去掉-c.

|
你指定的库就是mylib,只要你的.so文件经过编译后,只要你的程序用的这个so,你就需要重新编译一下你的文件才可以!当然你说那个可以采取一个接口的方式进行向你SO传值来达到你的目的。

|
好像是需要重新编译myapp的吧.

|
编译myapp.c文件时,使用-share,这样才是动态连接,下次替换.so就起作用了。
但要注意,.so必须是LD_LIBRARY_PATH变量能搜索到的,要不然就使用dlopen之类的
函数。

    
 
 

您可能感兴趣的文章:

  • 求助:对批量文件中的指定字符串进行替换:(批量替换)
  • 使用sh脚本如何替换指定目录下所有文件中的指定字符串
  • 请问:在HP-UX下如何替换正在使用的可执行文件?
  • 一个文件替换的问题
  • 请教一个多文件串替换的问题
  • 怎样用c的函数写出文本文件中的查找和替换功能?不会要重新写一边文件吧?
  • 在多文件中批量查找替换
  • python实现文件名批量替换和内容替换
  • 文件字符替换
  • 在Unix下替换某个目录下所有文件的特定字符串
  • linux下如何实现文件内容得查找替换
  • 请教:什么命令可以把一个文件中的某个字符用另一个字符替换
  • 读取文件,替换一定的内容后给另外的一个页面(document.write),字符转换的问题
  • 怎样替换一个目录下所有文件中的字符串?
  • sed 正则表达式 文件内容替换
  • sed命令替换文件中的一个字符串的用法,急......., 多谢!
  • 请教:用PERL如何替换文件中的特定的一行?
  • shell替换文件中的文件路径脚本分享
  • 如何批量替换某个文件中的词
  • 如何用shell实现将指定文件中的指定的字符串替换为我指定的另外的字符串
  • linux 下的 .a 文件 .o 文件 是什么文件?各有什么作用?
  • 我在jbuilder中生成了.war文件,请问它是什么文件?有什么作用
  • 文件.exrc在什么位置?有何作用?
  • RedHat 9 如何重新编译内核并重新配置启动文件使其起作用?
  • etc-linux文件的作用
  • linux编译产生的.o.cmd文件有什么作用?
  • system.map文件的作用和理解
  • red hat linux 9.0中文件etc/inittab的作用及使用方法
  • 中断对于文件系统挂载有何作用?
  • 请问在用automake,autoconf生成工程文件时,"aclocal"命令的作用?
  • RPM的spec文件中source与%file的作用区别?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • /目录没有可用空间了,且没有可删除文件了,能否扩容,怎样扩容?
  • 请问各位谁知道JBuilder7的注册解密方法,我没有序列号,也没有解密文件
  • linux有没有现成的库函数用来将文件或目录压缩成一个tar文件,以及解压一个tar文件?
  • 有没有办法在打开一个文件之前判断当前是否有进程在使用(读或写)该文件
  • 求助!如何在没有图形界面的LINUX下压缩文件夹,并将这个压缩文件在windows下解压?
  • 编译前的java文件没有,只有class文件
  • solaris中,有没有那个log文件纪录某个文件夹下的删除动作。
  • 为何XML文件用IE执行后的结果和原文件一样?没有执行?
  • 请问大家我的root文件夹怎么没有 .bash_profile这个文件啊
  • jsp中如何获得当前jsp文件所在的目录,用request.getServletPath()得到的路径含有jsp文件名,有没有办法得到目录(不含文件名)?
  • 没有ttyS4文件,怎样使系统有/dev/ttyS4设备文件?
  • 请问:linux下有没有可以要开.pdf文件的软件或者工具啊,现在碰到很多.pdf文件根本不能看啊
  • shell文件中第一行为#!/bin/bash ,运行后提示“:bad interpreter 没有那个文件或目录”是什么错误?怎么修改?
  • (高分)急!!!如何在DOS批处理文件中判断一个.TXT文件有没有记录(数据)
  • 有个文件第一行为:#!/usr/bin/parse 这个文件看起来象是一个脚本,但是没有见过,请教!
  • 没有路径的情况下创建的文件的默认路径是和程序生成可执行文件在同一个目录中是吗?。
  • 用JCreator写了一个小程序,有十几个class,当修改某个文件重新编译,javac并没有编译修改的文件,请问要如何做javac才会重新编译所有的
  • 请教大家一个问题,有没有一个类既可选择目录又可选文件,jFileChooser只能选文件。
  • 请问:在配置Qt时,很多文档都说在.profile,.login里加东西,但是我好像没有发现有这两个文件上,请问这些文件在哪个目录下啊
  • linux 安装 oracle 运行./runinstall 提示没有这个文件
  • C++ I/O 成员 eof():如果处于文件结尾处则返回true
  • Shell脚本如何递归现实一个文件夹中的文件(文件夹中含有文件夹)
  • WinDows8最新版文件夹加密
  • 求命令:什么命令可以把文件夹下所有的文件按修改时间先后排出来,包括子文件夹里的文件。
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • [提问]Linux下如何把多个.a文件编译一个.so文件,或者把多个.so文件编译成一个.so文件
  • python异常信息堆栈输出到日志文件
  • 请问:proc中的头文件中能包含头文件吗?(感觉如果头文件中包含头文件的话,在链接时就会有错误啊)
  • Centos6下安装Shell下文件上传下载rz,sz命令
  • 我要实现当进程打开文件时,根据文件名判断是否符合要求,符合后处理文件,再把文件返回给进程,怎么实现啊
  • 在MyEclipse中设开启xml文件自动提示和自动完成功能


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3