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

一个关于gcc编绎一个简单程序的奇怪问题!?

    来源: 互联网  发布时间:2015-01-31

    本文导语:  昨晚想到去linux下写个动态/静态库,所以就写了下面的两个程序: // test_library.h int test(void); // test_library.cpp #include  #include "test_library.h" int test(void) {     printf("test library!n");     return(0); } // test.cpp #include "t...

昨晚想到去linux下写个动态/静态库,所以就写了下面的两个程序:
// test_library.h
int test(void);

// test_library.cpp
#include 
#include "test_library.h"

int test(void)
{
    printf("test library!n");
    return(0);
}

// test.cpp
#include "test_library.h"

int main(int nP, char *cpP)
{
    test();
    return(0);
}

然后
gcc -c test_library.cpp -o test_library.o
gcc -shared -Wl,soname,libtest.so.1 test_library.o -o libtest.so.1.0
或者
ar cqs test_library.o -o libtest.a
以上都成功地生成动态库和静态库

接着是编绎测试程序test
gcc -c test.cpp -o test.o //成功
gcc test.o -L/current_dir -ltest -o test //出错
出错的大意是:链接错误!找不到函数__gxx_perso???_vol()!
我用nm test.o来查看到以下内容(大概吧)
__gxx_perso???_vol() // 为什么第一个函数就是这个呢?!
                     // 它又是怎么出来的?!我的程序里没有这个函数啊!
main()
test()

|
编译共享库
gcc -shared -Wl,soname,libtest.so.1 test_library.o -o libtest.so.1.0将共享库载入系统共享路径(创建硬连接)
#ln -s ./libtest.so.1.0 /lib/libtest.so.1
查看一下是否已共享
#ldconfig -v | grep libtest.so.1

编译主程序
#gcc -c test.cpp -o test.o
link整个程序
#gcc test.o -ltest -o test 

    
 
 

您可能感兴趣的文章:

  • 奇怪???gcc??
  • GCC的一个奇怪的问题,求救!
  • 关于LINUX I2C,GCC的奇怪问题。。。问题依旧。。
  • gcc编译含math.h程序的奇怪现象(并非未添加-lm),盼解
  • 关于GCC的奇怪问题,高手进。
  • gcc编译出现一个奇怪的问题,各位帮忙看看
  • 太奇怪了,正在开发bootloader,gcc难道有内置的string的处理函数链接到我的程序中了?我根本没有链接C库啊。
  • 奇怪的执行顺序,不知是否和gcc版本有关
  • 64位下gcc编译奇怪错误 /usr/include/linux/errqueue.h:6: error: '__u32' does not name a ty
  • gcc 下段错误 奇怪的很
  • Solaris8,安装了iconv,gcc和gcclib,然后用gcc编译c程序出错。
  • GCC编译程序时,有自定义头文件,提示找不到该头文件,但他就在这个目录中,如何设置GCC参数?
  • 是否必须用同一版本GCC编译内核、应用程序、库甚至GCC自己?
  • 在linux编c程序,用gcc函数如何联接?
  • gcc程序怎么不能将输出重定向到文件或管道呀,你们有这个问题吗?
  • 请教 在linux下用gcc编译c程序的问题
  • Linux 下 gcc 运行程序时出错
  • gcc编译c程序时的问题!
  • 怎么用GCC编译网络程序?
  • root帐户使用GCC编译程序时,提示权限不够!!
  • 如何用gcc编译用了new[],delete[]语句的程序?
  • gcc编译CORBA程序如何关闭智能指针转换为普通指针的警告
  • 今天装了个linux9.0 问:怎样调出gcc来编译c++程序?(谢谢)
  • gcc与g++对于编译c++程序的区别
  • 请问如何用gcc,或者g++编译c/c++程序
  • 请问如何在linux下用gcc调试socket程序???
  • 在redhat7.2中用gcc命令编译程序 却不能运行
  • 有没有GCC程序与VS程序转换的工具
  • 用gcc编译完成的程序为什么不能直接运行?
  • 请教大虾,我装了个linux,但是怎么不能编译c程序,不认识gcc!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • GCC无法安装的问题,希望有人帮我( Debian 4.04ra无法安装GCC)
  • gcc与arm-linux-gcc编译的问题???
  • 疑惑softfloat的问题,并求arm-linux-gcc和arm-linux-softfloat-gcc4.1.1
  • 安装Oracel,关于ln -s /usr/i386-glibc-2.1-linux/bin/i386-glibc21-linux-gcc gcc的问题
  • 卸载和安装GCC问题
  • gcc安装的问题
  • cc与gcc的问题
  • 关于gcc的问题!
  • gcc 问题
  • 内核版本问题 GCC版本问题
  • solaris下gcc问题
  • 博客 iis7站长之家
  • gcc-g++版本问题
  • gcc问题,求助
  • 请大虾支招啊-gcc 编译选项问题 以及 makefile的问题
  • 初学gcc使用的问题
  • ****求助,关于REDHAT LINUX 9下的GCC编译器问题.............
  • Ubuntu8.04安装GCC问题
  • gcc安装遇到的问题
  • 请问大虾有关在windows上移植GCC的问题。
  • Linux下GCC内置原子操作函数(多线程资源访问)介绍
  • 使用popen来执行gcc命令,如何根据读出来的gcc的输出来判断gcc是否编译成功?
  • 命令:mips_fp_le-gcc,mipsel-gcc 是什么意思?跟一般的gcc有什么区别?
  • 怎样升级我的GCC呀,我用的RH7.2,GCC 2.96 ,我从网上下载了一个gcc-3.2.3.tar.gz
  • arm-elf-gcc 和 arm-linux-gcc有什么区别?arm-elf-gcc里的elf代表什么?
  • gcc-ccore、avr-gcc及arm-gcc的区别
  • gcc在哪里?bash:gcc:command not found
  • 如何删掉GCC3.0(我需要GCC2.0-----)
  • Windows版GCC TDM-GCC
  • 急问:如何卸掉gcc 3.2庄gcc 2.96
  • 有人遇到过吗,在安装GCC时提示,"checking gcc ...no "


  • 站内导航:


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

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

    浙ICP备11055608号-3