This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Linking Assembly Code - Can't resolve printf
- From: Kai Tietz <Kai dot Tietz at onevision dot com>
- To: "David Lariviere" <dal2103 at columbia dot edu>
- Cc: cygwin at cygwin dot com
- Date: Wed, 20 Sep 2006 09:29:33 +0200
- Subject: Re: Linking Assembly Code - Can't resolve printf
Hallo David,
Some OS's - as cygwin - expand names by underscores. Therefore simply
write instead of "printf" just "_printf". That should work for this
unresolved symbol. But the rest does not seems to be ABI compatible for
cygwin. Additionally the entry-point won't work this way ...
Chears,
i.A. Kai Tietz
"David Lariviere" <dal2103@columbia.edu>
Sent by: cygwin-owner@cygwin.com
20.09.2006 09:16
To
<cygwin@cygwin.com>
cc
Subject
Linking Assembly Code - Can't resolve printf
I have a simple assembly program that I am trying to compile, but ld
cannot
resolve printf.
------
#movtest3.s - Example using index memory locations
.section .data
output:
.asciz "The value is %d\n"
values:
.int 10,15,20,25,30,35,40,45,50,55,60
.section .text
.globl _start
_start:
nop
movl $0, %edi
loop:
movl values(, %edi, 4), %eax
pushl %eax
pushl $output
call printf
addl $8, %esp
inc %edi
cmpl $11, %edi
jne loop
movl $0, %ebx
movl $1, %eax
int $0x80
#end of ASM
#Makefile
test:
as -o indexedMemory.o indexedMemory.s
ld --verbose -o indexedMemory indexedMemory.o -lc
#end of Makefile
Result is always:
....
attempt to open indexedMemory.o succeeded
indexedMemory.o
attempt to open /usr/bin/../lib/libc.dll.a failed
attempt to open /usr/bin/../lib/c.dll.a failed
attempt to open /usr/bin/../lib/libc.a succeeded
indexedMemory.o:fake:(.text+0x14): undefined reference to `printf'
make: *** [test] Error 1
#end of result
-------------
I've tried linking in numerous libraries, hoping one would resolve printf,
and in numerous order of where to include the -lxxx, but I can't get it to
compile. I've also tried it on numerous computers, including those with a
first-time fresh install of cygwin. Compiling a simple helloworld C
program
works fine.
I've compiled the same program fine in linux using as/ld.
What am I doing wrong???
Thank you for any help,
- David
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/