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

ld 连接问题

    来源: 互联网  发布时间:2016-11-16

    本文导语:  我写了两个文件(1.c,2.c)目的想验证一下在C语言中在一个文件中调用另一个文件变量,文件内容如下 /************1.c*********************/ #include int chen =10; void xian() { printf("xian!n"); } /*********2.c*********************/ #include void ...

我写了两个文件(1.c,2.c)目的想验证一下在C语言中在一个文件中调用另一个文件变量,文件内容如下
/************1.c*********************/
#include
int chen =10;
void xian()
{
printf("xian!n");
}

/*********2.c*********************/
#include
void xian();
extern int chen;
void main()
{
printf("now is %dn",chen);
xian();
}
我分别使用如下命令,将两文件编译成连接文件
gcc -c  -o 1.o 1.c
gcc -c -o 2.o 2.c 
然后我在使用ld 命令进行连接
ld -o chen.out 1.o 2.o
此时出现错误,提示为
ld: warning: cannot find entry symbol _start; defaulting to 0000000008048094
我查阅了相关资料,说是如果使用ld指令时需要在汇编一个入口函数_start,于是我又写了个文件3.asm,内容如下
/*******************3.asm**********************/
extern main;
global _start
_start:
call main;
使用nasm命令编译成连接文件
nasm -f elf -o 3.o 3.c

好了之后,再次使用ld命令
ld -o chen.out 1.o 2.o 3.o
再次出现错误
1.o: In function `xian':
1.c:(.text+0xe): undefined reference to `puts'
2.o: In function `main':
2.c:(.text+0x1c): undefined reference to `printf'


这次真的有点懵了,据有些人说是由于我使用了C语言的库函数,需要加相应的参数,我实在不知道如何做了,高手指点下,不胜感激。。。。

|
看看 《程序员的自我修养》 这本书吧

程序的运行不光你的那三个o文件链接起来就行的,还需要操作系统的支持。还需要运行库...

|
写个makefile吧

|
gcc -o chen.out 1.o 2.o

|
友情帮顶。
网上关于ld的资料比较少。《程序员的自我修养》里有介绍ld。
那个找不到_start的警告,可以通过-e main来指定入口。
还是用Gcc吧。

    
 
 

您可能感兴趣的文章:

  • [求教]:NFS的连接问题.做NFS时报连接错误,据称是portmap问题,但...
  • ftp连接问题,就是linux连接windows ftp的问题,高手请进(在线等待)!!!!!
  • 在线请教:linux下用MySQL C API 连接MySQL 4.1.12出现的连接问题,提示升级客户端!!!!!!
  • 动态连接库和静态连接库的问题 在线等待.......!!!
  • 一个连接池使用的问题:这种写法没用上连接池?
  • 我用JBuilder 7连接局域网内一ORACLE 9( 在本机可以连接)的问题?
  • 程序发布的问题(动态连接库的问题)
  • 在jbuilder中调用一bean连接数据库没有问题,在jsp中调用就连接不上数据库
  • linux问题 secureCRT连接的问题 在线等急!~~
  • 文件连接问题
  • linux vsftpd连接问题
  • 数据库连接的问题
  • 关于远程连接lunx的问题
  • 操作系统 iis7站长之家
  • 程序连接问题!
  • windows 客户机连接 samba 的权限问题, 急啊 ....
  • 关于使用数据库连接的问题。
  • 关于连接共享的问题, 请帮忙
  • 连接池问题
  • 关于LINUX SOCKET连接CPU占用问题
  • ld用法:gcc 的连接器ld怎样连上.o文件
  • gcc中连接器ld -r命令是什么作用
  • 用 gcc 或 ld 连接程序时,如何设置段的属性?
  • 请问,如何指定ld的,连接路径。
  • [100分求助]预连接:prelink: Could not write /lib/ld-2.5.so: cannot write data to file
  • 利用自己编译的库连接时报/usr/bin/ld: cannot find ,请问如何解决.
  • 关于使用 g++/ld 编译连接多个 c++ 文件的问题!
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • mysql中如何查看最大连接数(max_connections)和修改最大连接数
  • 什么是socket的长连接,以及如何实现长连接,长连接和短连接有什么区别?
  • 如何在windows上远程连接centOS桌面
  • 建立长连接的SOCET通讯后,如何检查长连接的有效性,如何获知连接状态
  • Myeclipse中自带Tomcat的JDBC连接池配置(mysql和mssql)
  • Oracle 表连接方式(内连接/外连接/自连接) 详解
  • php中内置的mysql数据库连接驱动mysqlnd简介及mysqlnd的配置安装方式
  • 关于inetd。我做了一个测试程序,想计算ftp最多能有多少了连接,我发现当连接到1020次就不可以连接了,哪位大侠知道如何做才能将连接数量增加至10000呢??
  • php中操作memcache的类及成员列表及php下如何连接memched服务器
  • 哪位给解释一下长连接和短连接的区别?
  • mysql jdbc连接mysql数据库步骤及常见参数详解
  • ssh连接得通虚拟机,连接不通隔壁宿舍?
  • windows server2012无法连接无线网络解决方法(windows无线连接)
  • 请问unix/linux下动态连接库和静态连接库有什么区别?
  • fedora15 KDE桌面下能连接WLAN,GNOME下能搜到信号,就是连接不上,。。。。
  • linux 有线连接了却显示有线连接断开是怎么回事
  • 建立一个ftp数据连接并传送或接受完毕一些数据后,能否不关闭此数据连接,下次接着用?
  • oracle远程连接服务器出现 ORA-12170 TNS:连接超时 解决办法
  • LINUX中连接C++的库怎么连接.库在什么位置,还有什么特殊命令吗?
  • socket 断开连接如何再恢复连接
  • 请问连接本机数据库的JDBC,和连接远程的JDBC有没有区别?


  • 站内导航:


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

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

    浙ICP备11055608号-3