当前位置: 首页 > news >正文

免费行情网站云主机怎么上传网站

免费行情网站,云主机怎么上传网站,报社网站开发做什么,wordpress数据库进不去一、废话 之前由于工作需要#xff0c;要封装一个Linux加密解密转换的动态库#xff0c;这个之前只做过Windows下面的#xff0c;Linux下面还真没有做过#xff0c;之后做了整一个晚上才算做好#xff0c;不过其中也学到了不少东西#xff0c;包括Linux下的动态库和静态库… 一、废话 之前由于工作需要要封装一个Linux加密解密转换的动态库这个之前只做过Windows下面的Linux下面还真没有做过之后做了整一个晚上才算做好不过其中也学到了不少东西包括Linux下的动态库和静态库MakeFile等等。之前就已经写了一个练习之后怕又忘了总结一下备忘以后也好查。 很大部分内容都是收集的一些东西还有自己学习的体会有什么错误或者问题请直接提出。 二、关于库的问题 1.库的原则 现实中每个程序都要依赖很多基础的底层库不可能每个人的代码都从零开始。尽量不重复做别人已经做过的事就是尽量充分利用别人的劳动成果。就是“站在巨人的肩膀上”做事情。 2.库的种类 根据链接时期的不同库又有静态库和共享库动态库 二者的不同点在于代码被载入的时刻不同 静态库的代码在编译过程中已经被载入可执行程序因此体积较大 共享库的代码是在可执行程序运行时才载入内存的在编译过程中仅简单的引用因此代码体积较小。 3.静态库和动态库的比较 接静态库其实从某种意义上来说只不过它操作的对象是目标代码而不是源码而已。因为静态库被链接后库就直接嵌入可执行文件中了这样就带来了两个问题。 1首先就是系统空间被浪费了。这是显而易见的想象一下如果多个程序链接了同一个库则每一个生成的可执行文件就都会有一个库的副本必然会浪费系统空间。 2再者一旦发现了库中有bug挽救起来就比较麻烦了。必须一一把链接该库的程序找出来然后重新编译。 而动态库的出现正弥补了静态库的以上弊端。因为动态库是在程序运行时被链接的所以磁盘上只须保留一份副本因此节约了磁盘空间。如果发现了bug或要升级也很简单只要用新的库把原来的替换掉就行了。 但是静态库也有自己的优点 编译后的执行程序不需要外部的函数库支持因为所有使用的函数都已经被编译进去了。 静态库的名字一般是libxxx.aLinux 动态库的名字一般是libxxx.so Linux有时候也是 libxxx.so.major.minorxxxx是该lib的名称major是主版本号 minor是副版本号 linux系统有几个重要的目录存放相应的函数库如/lib /usr/lib 4.如何判断一个程序有没有链接动态库 1file命令 file程序是用来判断文件类型的啥文件一看都清楚明了。 2ldd命令 看动态库如果目标程序没有链接动态库则打印“not a dynamic executable” 不是动态可执行文件 file run和run_dyn都是可运行文件action.h上一个ASCII C文件 ldd: run_dyn 使用了共享库action.o是不动态可执行文件   5.linux下库文件是如何产生的 1静态库 静态库的后缀是.a它的产生分两步 Step 1.由源文件编译生成一堆.o每个.o里都包含这个编译单元的符号表 Step 2.ar命令将很多.o转换成.a成文静态库 2动态库 动态库的后缀是.so它由gcc加特定参数编译产生。 三、我的学习例子 1.要用到的工具 g/gcc ar gcc常用参数 -L 加载库文件路径 -l 指明库文件名字 -fPIC 达到动态链接的目的还有一个什么要注意的忘了 -I dir选项的功能在头文件的搜索路径列表中添加 dir 目录 2.我的文件 1doThing //dosomething.h 1: #ifndef DOSOMETHING_H 2: #define DOSOMETHING_H 3: 4: #include string 5: 6: void doThing(const std::string strThing); 7: 8: #endif // DOSOMETHING_H 9: //dosomething.cpp 1: #include dosomething.h 2: #includeiostream 3: 4: void doThing(const std::string strThing) 5: { 6: std::cout start do thing : strThing std::endl; 7: } 8: 2Action类使用doThing函数 //action.h 1: #ifndef ACTION_H 2: #define ACTION_H 3: #includestring 4: 5: using namespace std; 6: 7: class Action 8: { 9: public: 10: void setAction(const string strAction); 11: void doAction(void); 12: 13: private: 14: string mstrAction; 15: }; 16: 17: #endif // ACTION_H 18: //action.cpp 1: #include action.h 2: #include dosomething.h 3: 4: void Action::setAction(const string strAction) 5: { 6: mstrAction strAction; 7: } 8: 9: void Action::doAction(void ) 10: { 11: doThing(mstrAction); 12: } 13: 3主文件 //main.cpp 1: #include iostream 2: #include action.h 3: 4: int main(int argc, char **argv) 5: { 6: 7: Action action; 8: action.setAction(say hello!); 9: action.doAction(); 10: 11: return 0; 12: } 13:   linux下生成写库文件代码好像更容易些不用写Windows下面那样的在头文件还要要写DLL导出显得很干净。 3.使用静态库的方法 基本命令 g –c –o –L –l -I ar cr 打包 最后生成了run可以直接执行成功。 4.使用动态库 基本命令 g –c –o –shared –fPIC –L –l –I 生成so时加 –shared –fPIC 我在生成后立即执行有错误了。 原因因为在动态函数库使用时会查找/usr/lib、/lib目录下的动态函数库而此时我们生成的库不在里边。 这个时候有好几种方法可以让他成功运行 1最直接最简单的方法就是把so拉到/usr/lib或/lib中去但这好像有点污染环境吧 2export LD_LIBRARY_PATH$(pwd) 3可以在/etc/ld.so.conf文件里加入我们生成的库的目录然后/sbin/ldconfig 关于/etc/ld.so.conf /etc/ld.so.conf里面存放的是链接器和加载器搜索共享库时要检查的目录默认是从/usr/lib /lib中读取的所以想要顺利运行我们也可以把我们库的目录加入到这个文件中并执行/sbin/ldconfig 。 关于/etc/ld.so.cache /etc/ld.so.cache里面保存了常用的动态函数库且会先把他们加载到内存中因为内存的访问速度远远大于硬盘的访问速度这样可以提高软件加载动态函数库的速度了。 使用了第2种方法解决问题 四、其它涉及到的东西 1dlopen方法的动态库显式调用 2gcc的各个参数 3makefile的编写 五、感谢 学习过程中参考了好多其它文章由于之前存的TXT参考无法查找出处给出链接在这里谢谢作者这里仅供本人学习。 您可以对本文随意转载修改或使用但请保持正确性不要误导他人。 本文出处http://pppboy.blog.163.com/blog/static/302037962011112104720934/
http://www.pierceye.com/news/940978/

相关文章:

  • 互联网做网站怎么赚钱WordPress副标题不显示
  • 好的网站域名网站运营推广怎做
  • 巴适网站建设wordpress上传与安装包
  • 网站备案不关站wordpress网
  • 中国佛山手机网站建设十大互联网公司排名
  • 手把手指导做网站wordpress 熊掌号插件
  • 宁波网站建设方案报价湖州企业做网站
  • 优化 导航网站百度官网网站首页
  • 各大网站大全河北网站建设seo优化制作设计
  • 做照片的网站前端开发和后端开发
  • 谁能低价做网站支付接口泰州企业自助建站系统
  • 徐州 网站建设辽阳建设网站
  • PHP MySQL 网站开发实例单页应用网站
  • 制作网站的步骤关于企业网站建设的相关思考
  • 统计局网站建设情况ppt设计网站
  • 中石化第四建设公司 网站哪个软件可以看街道实景
  • 郑州做网站哪个平台好全国网站备案
  • 个人网站空间申请html5 网站开发 适配
  • 建站行业如何快速成第一单js制作网页游戏
  • 建立网站后怎么维护做网站自己租服务器还是网络公司
  • 建网站赚钱wordpress 公众号主题
  • 亚马逊网站建设的意义海西高端网站建设
  • 建设静态网站淘宝客怎么建设网站
  • wordpress网站外包浙江省建设厅新网站人员无法查询
  • 广州天与地网站建设石家庄快速建站公司
  • 汕头投资建设总公司网站专做PPP项目网站
  • 双语教学示范课程建设项目网站建设通网站上线
  • 电子商务网站域名注册要求南京电商设计
  • 网站左侧导航设计国内免费服务器地址
  • 怎样上网站dns解析不了图片墙网站源码