zoukankan      html  css  js  c++  java
  • 使用 GCC 在 IBM AIX 上编译程序

    在 IBM AIX 5.3 上使用 GCC 编译程序心得如下:

      1、编译 64 位和 32 位程序的参数分别是 -maix64 -maix32 ,默认编译 32 位程序

      2、链接时指定动态库直接给定动态库名称,例如 libfunc.so 而不是 -lfunc 的形式,否则给出 ld returned 255 错误信息

      3、搜索动态库的路径 -L 指定的目录将被编译到目标程序中,例如使用 -L. 编译的结果使用 ldd 查看可以看到 ./libfunc.so 如果使用 -L/app/demo 则 ldd 显示依赖与 /app/demo/libfunc.so

      如果有文件 func.cpp 和 demo.cpp 前者编译成动态库 libfunc.so ,后者是可执行程序,使用前面的动态库,命令列表如下:

    g++ -fPIC -O3 -ggdb -o func.o func.cpp
    g
    ++ -fPIC -O3 -ggdb -o main.o demo.cpp
    g
    ++ -fPIC -shared -o libfunc.so func.o
    g
    ++ -fPIC -o demo demo.o libfunc.so -L.

      执行 demo 程序可以看到已经调用动态库中的函数输出信息,使用 ldd 可以看到 demo 依赖动态库 ./libfunc.so

      这与在 linux 下编译的参数有差异,在 linux 下编译的命令行应该是:

    g++ -fPIC -c -o func.o func.cpp
    g
    ++ -fPIC -shared -o libfunc.so func.o
    g
    ++ -fPIC -c -o demo.o demo.cpp
    g
    ++ -fPIC -o demo demo.o -lfunc -L/app/demo

      linux 的动态库加载器严格按照 LD_LIBRARY_PATH 的顺序搜索,不像 Windows 会首先在可执行程序所在的目录搜索。

      如果在 LD_LIBRARY_PATH 中配置了当前目录 . 则在 /app/demo 下执行 demo 可以成功执行,但是在 /app 下执行 demo/demo 则提示找不到动态库。

      

  • 相关阅读:
    使用jsonp跨域调用百度js实现搜索框智能提示(转)
    jsonp 跨域
    Aixs2发布webservice服务
    java web service 上传下载文件
    java 网页 保存上传文件
    flash、js 函数 互相调用
    java web工程启动socket服务
    mysql 在Windows下自动备份
    Servlet中几个常用方法的推衍
    Tomcat常用设置 <持续更新>
  • 原文地址:https://www.cnblogs.com/WonKerr/p/GCC_IBM_AIX.html
Copyright © 2011-2022 走看看