X-Spam-Check-By: sourceware.org To: "David Lariviere" Cc: cygwin AT cygwin DOT com Subject: Re: Linking Assembly Code - Can't resolve printf MIME-Version: 1.0 X-Mailer: Lotus Notes Release 7.0.1 January 17, 2006 Message-ID: From: Kai Tietz Date: Wed, 20 Sep 2006 09:29:33 +0200 Content-Type: text/plain; charset="US-ASCII" X-IsSubscribed: yes Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com 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" Sent by: cygwin-owner AT cygwin DOT com 20.09.2006 09:16 To 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/