最近一直在学习Qt,用Qt写了一个程序,但是不知道怎么发布,网上说的都是在windows下怎么发布Qt应用程序,但是,在windows下Qt应用程序依赖的库文件与linux下的名字不同。于是,我就想到Linux下有没有这么一个命令,能够找到一个可执行文件运行时所依赖的库文件,百度一下,还真的有ldd命令。

ldd的作用是打印可执行文件依赖的共享库文件,它是glibc的一部分:

root@zhangyingxiu-K43SJ:~# ldd --help
Usage: ldd [OPTION]... FILE...

--help              print this help and exit
--version           print version information and exit
-d, --data-relocs       process data relocations
-r, --function-relocs   process data and function relocations
 -u, --unused            print unused direct dependencies
 -v, --verbose           print all information
For bug reporting instructions, please see:
<https://bugs.launchpad.net/ubuntu/+source/eglibc/+bugs>.

root@zhangyingxiu-K43SJ:~# ldd --version
ldd (Ubuntu EGLIBC 2.17-0ubuntu5.1) 2.17
版权所有 (C) 2012 Free Software Foundation, Inc.
这是自由软件;请参考原始码的版权声明。本软件不提供任何担保,甚至不会包括可售性或适用于任何特定目的的担保。
由 Roland McGrath 和 Ulrich Drepper 编写。

但是,我在网上查资料发现ldd本身不是一个程序,而仅是一个shell脚本,所以自己在ubuntu13.04上查找了一下:

root@zhangyingxiu-K43SJ:~# which ldd
/usr/bin/ldd
root@zhangyingxiu-K43SJ:~# ls -al /usr/bin/ldd
-rwxr-xr-x 1 root root 5267  9月 30 22:56 /usr/bin/ldd
root@zhangyingxiu-K43SJ:~# file  /usr/bin/ldd
/usr/bin/ldd: Bourne-Again shell script, ASCII text executable

现在已经知道ldd的本质,更多ldd的用法可以百度。于是我运行命令查看动态库:

root@zhangyingxiu-K43SJ:/mywork/mytest/myqq# ldd MYQQ
    linux-gate.so.1 =>  (0xb77a6000)
    libQt5Widgets.so.5 => /usr/lib/i386-linux-gnu/libQt5Widgets.so.5 (0xb717b000)
    libQt5Sql.so.5 => /usr/lib/i386-linux-gnu/libQt5Sql.so.5 (0xb713d000)
    libQt5Network.so.5 => /usr/lib/i386-linux-gnu/libQt5Network.so.5 (0xb6fff000)
    libQt5Gui.so.5 => /usr/lib/i386-linux-gnu/libQt5Gui.so.5 (0xb6c21000)
    libQt5Core.so.5 => /usr/lib/i386-linux-gnu/libQt5Core.so.5 (0xb67ee000)
    libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0xb6705000)
    libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xb66e8000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb6533000)
    libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xb6518000)
    libgobject-2.0.so.0 => /usr/lib/i386-linux-gnu/libgobject-2.0.so.0 (0xb64c8000)
    libglib-2.0.so.0 => /lib/i386-linux-gnu/libglib-2.0.so.0 (0xb63c7000)
    libX11.so.6 => /usr/lib/i386-linux-gnu/libX11.so.6 (0xb6290000)
    libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xb624c000)
    libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xb6233000)
    libpng12.so.0 => /lib/i386-linux-gnu/libpng12.so.0 (0xb620a000)
    libGL.so.1 => /usr/lib/nvidia-310/libGL.so.1 (0xb612a000)
    libicui18n.so.48 => /usr/lib/i386-linux-gnu/libicui18n.so.48 (0xb5f56000)
    libicuuc.so.48 => /usr/lib/i386-linux-gnu/libicuuc.so.48 (0xb5df0000)
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb5deb000)
    librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xb5de2000)
    /lib/ld-linux.so.2 (0xb77a7000)
    libffi.so.6 => /usr/lib/i386-linux-gnu/libffi.so.6 (0xb5ddb000)
    libpcre.so.3 => /lib/i386-linux-gnu/libpcre.so.3 (0xb5d9a000)
    libxcb.so.1 => /usr/lib/i386-linux-gnu/libxcb.so.1 (0xb5d77000)
    libnvidia-tls.so.310.44 => /usr/lib/nvidia-310/tls/libnvidia-tls.so.310.44 (0xb5d73000)
    libnvidia-glcore.so.310.44 => /usr/lib/nvidia-310/libnvidia-glcore.so.310.44 (0xb4051000)
    libXext.so.6 => /usr/lib/i386-linux-gnu/libXext.so.6 (0xb403f000)
    libicudata.so.48 => /usr/lib/i386-linux-gnu/libicudata.so.48 (0xb2ece000)
    libXau.so.6 => /usr/lib/i386-linux-gnu/libXau.so.6 (0xb2ec9000)
    libXdmcp.so.6 => /usr/lib/i386-linux-gnu/libXdmcp.so.6 (0xb2ec2000)

然后,把Qt应用程序运行时需要的Qt库文件:libQt5Core.so.5.0.1,libQt5Gui.so.5.0.1,libQt5Network.so.5.0.1,libQt5Sql.so.5.0.1,libQt5Widgets.so.5.0.1拷贝到与可执行文件相同的文件夹下,然后打包压缩,就可以拿到其他的linux系统下运行了。注意:以上显示的库文件很多都是软链接文件,所以要到相应文件夹中找到真正的库文件。

http://blog.csdn.net/zyx_linux/article/details/20067335

Linux下Qt应用程序的发布(使用LDD命令查看所有依赖的库文件)的更多相关文章

  1. linux 下Qt WebEngine 程序打包简单记录

    本次记录仅作参考. 程序说明: 程序是一个编解码器控制管理的工具,使用到的库有:Qt的WebEngine.OpenGL模块.poco库.libmicrohttpd.libcurl.libvlc.同时程 ...

  2. qt添加cef库嵌入web,linux 下Qt WebEngine 程序打包简单记录

    http://www.cnblogs.com/oloroso/p/6051631.html http://www.cnblogs.com/oloroso/p/6149000.html

  3. Linux下Qt的安装与配置

    参考资料:http://www.cnblogs.com/emouse/archive/2013/01/28/2880142.html Linux 下编译.安装.配置 QT 下载qt 这里用的是4.7. ...

  4. linux 下部署web 程序

    linux 下部署web 程序 1. 创建ucenter用户 一般情况下,发布应用程序都不是使用root用户的,需要创建一个普通用户来发布程序: 创建ucenter用户: useradd -d /uc ...

  5. Linux下Qt创建共享库与链接共享库详解

    随着程序写的逐渐变多,或多或少的我们都会使用别人写好的库:或者我们不想让别人看到我们的一些核心程序,可以将核心程序封装成库.本次和大家分享的是在Ubuntu下使用Qt生成共享库以及在Qt中链接共享库的 ...

  6. Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法

    Ubuntu下QT控制台程序无法运行的解决方案以及XTerm的配置方法 最近由于老师要求要在Ubuntu下QT上进程多线程服务器的开发,虽然只是单纯的调用qt的network模块,但是为了避免麻烦,我 ...

  7. Linux下执行Java程序报错

    在linux下编译java程序,执行javac编译生成class文件时,在centos7终端输入如,javac hello.java    会提示未找到指令,但用java -verison测试环境变量 ...

  8. 终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误

    终于解决了Linux下运行OCCI程序一直报Error while trying to retrieve text for error ORA-01804错误 http://blog.csdn.net ...

  9. Linux 下运行 C++ 程序出现 “段错误(核心已转储)”

    Linux下写C++程序出现“段错误(核心已转储)”的问题: 段错误一般就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它 ...

随机推荐

  1. Java Native Interface Specification(JNI)

    Java Native Interface Specification(JNI) 使用场景: 需要的功能,标准的java不能提供 有了一个用其他的语言写好的工具包,希望用java去访问它 当需要高性能 ...

  2. hdu 5040 BFS 多维化处理图

    http://acm.hdu.edu.cn/showproblem.php?pid=5040 跟这一题http://blog.csdn.net/u011026968/article/details/3 ...

  3. 深入理解 IE haslayout

    转载自Bubblings Blog 原文地址:http://riny.net/2013/haslayout/ 1.什么是haslayout layout是windows IE的一个私有概念,它决定了元 ...

  4. SharePoint2010添加webpart找不到内容编辑器

    1.开启相关网站集功能.2.若还是找不到可以在其它有内容编辑器的站点下,在“Web 部件”中找到并下载内容编辑器,上传至本站点即可.

  5. [SAP] 外部系统调用SAP web service用户验证的简单方法

    场景: 一个Java系统调用SAP系统提供的web service,除了根据WSDL生成的代理类,调用相应方法,传入相应参数外,还等需要使用SAP提供的用户信息进行身份验证,最简单的方法是在soap请 ...

  6. Linux字符界面和图形界面

    Ubuntu图形界面和字符界面的切换 Ubuntu和其他的Linux系统一样,有图形界面和字符界面,同时能够设置默认的启动界面. linux的显示界面分为命令行的字符界面和图形界面,我们可以设置lin ...

  7. php学习笔记(3)

    1.计数器 <?php /* simple access counter for php3 (c)1998 David W. Bettis dbettis@eyeintegrated.com m ...

  8. 2013年末、2014年初合辑——关于c语言的进阶学习

    太过于慵懒了,一个多月没有来自己的园子播种了.还是给自己找找借口吧,十二月末备战期末考试也是自己没心情码文字的理由吧,一月份理所当然地进入考试周,回家后做了个小手术也是客观上让自己不能静下心来回顾知识 ...

  9. Aone新拉分支

    1.进入Aone新建项目 2.测试人员填huyangjun和husong 3.进入后拉分支 4.弄个日常普通环境 5.吧环境跑起,绑定Host就可以

  10. Maven 版 JPA 最佳实践(转)

    项目结构图 数据库环境 数据库:MySQL 版本:5.x 数据库名:jpa-demo 用户名密码:root/1234 代码清单 1:数据库脚本: ? 1 2 3 4 5 6 7 8 9 10 11 1 ...