07-28-2005
fread64 fwrite64 compilation problem (undefined symbol)
I use a standard C source to access large files in a 32 bit environment.
I've replaced fopen, fwrite and fread by fopen64, fwrite64 and fread64.
First I did a test only replacing fopen by fopen64, it compiled without any other changes to my compilation options.
The program crashed on a write, as I expected. then I replaced fwrite and fread by fwrite64 & fread64. But then I cannot compile it!!
Here's the error :
cc -c mergesor.c
cc -I/include -c smergeso.c
cc -o sort_msr13 sort.c llmsort.o mergesor.o smergeso.o
ld: 0711-317 ERROR: Undefined symbol: .fwrite64
ld: 0711-317 ERROR: Undefined symbol: .fread64
I tried with these macros :
#define _LARGEFILE64_SOURCE
#define _FILE_OFFSET_BITS 64
#include <stdio.h>
etc...
But without success
Can you help?
What should I add to allow fread64 and fwrite64?
10 More Discussions You Might Find Interesting
1. Programming
Hello,
when i compile with xlc on aix i got the error message "ld: 0711-317 ERROR: Undefined symbol: .hello"
dummy.pc:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "dummy.h"
int main ( )
{
printf("\nbefore Hello");
hello();
printf("\npast Hello"); ... (2 Replies)
Discussion started by: stockdan
2 Replies
2. Programming
Iam attempting a script to return the current cursor position using the getyc macro
I have #included the curses.h
however on compilation (with gcc) it errors with
Undefined symbol .getcury
Undefined symbol .gercurx
Any ideas where I can find a solution or what I've missed (7 Replies)
Discussion started by: gefa
7 Replies
3. Programming
Didn't have this problem in AIX, but ported to Linux with GCC compiler and am now getting a runtime error:
tssutil: symbol lookup error: /work/agility/devel/bin/libagam.so: undefined symbol: fstat
I'm sure most of you know that fstat is an intrinsic function just like printf, memcpy, etc. When I... (5 Replies)
Discussion started by: marcus121
5 Replies
4. Programming
Hi, i've compiled my app on x86_64 with -m32 gcc option. Can anybody tell me what is/would typically cause the 'undefined symbol: clock_gettime' error??
-1
k){0N!x y}
'/home/da71336/simon/mkvfh/mkv.so: undefined symbol: clock_gettime
@
"q"
"subr:mkv 2:`subr,3; subc:mkv 2:`subc,1;... (4 Replies)
Discussion started by: dpa078
4 Replies
5. AIX
Hi All,
When I am compiling expect 5.40 library in AIX 5.3, I am getting the following error while generating expect5.40.so file.
ld: 0711-317 ERROR: Undefined symbol: .log
ld: 0711-317 ERROR: Undefined symbol: .pow
ld: 0711-345 Use the -bloadmap or... (0 Replies)
Discussion started by: ravindra_maddal
0 Replies
6. Programming
Hi,
I am working with Solaris 5.9 and I am newbie in Socket programming and I stated working with socket programming and I copyed a simple client & server program from a website which I am attaching with this and when I am compiling these files.I am getting the error--
Please Help me to... (1 Reply)
Discussion started by: smartgupta
1 Replies
7. Programming
I am trying to compile pro*c program on aix 5.3. The program compiled fine when I was using curses library. After switching to ncurses, I have started getting compilation errors. After installing ncurses on the box, I changed the -lcurses flag to -lncurses. I have also updated the path to the... (13 Replies)
Discussion started by: wvuguy
13 Replies
8. Programming
I have a C code which i am trying to compile using gcc. When i am trying to compile it i get the error undefined symbol error though i am providing the -l*** option where *** refers to the module where the object files for those symbols are present.
Can someone help me on the same. (4 Replies)
Discussion started by: manaankit
4 Replies
9. Programming
When I try to link a .so file I get the undefined symbol error. Though I have the library file in my system. The compile and linking commands used are as follows
g++ -m64 -g -Wall -I./include -c dxl_sample.c
g++ -o firstprogram -m64 -g -Wall -I./include -Bdynamic... (1 Reply)
Discussion started by: Ranadeep Ghosal
1 Replies
10. UNIX for Advanced & Expert Users
When I try to link a .so file I get the undefined symbol error. Though I have the library file in my system. The compile and linking commands used are as follows
g++ -m64 -g -Wall -I./include -c dxl_sample.c
g++ -o firstprogram -m64 -g -Wall -I./include -Bdynamic... (1 Reply)
Discussion started by: Ranadeep Ghosal
1 Replies
LEARN ABOUT LINUX
lfcompile64
lfcompile64(5) Standards, Environments, and Macros lfcompile64(5)
NAME
lfcompile64 - transitional compilation environment
DESCRIPTION
All 64-bit applications can manipulate large files by default. The transitional interfaces described on this page can be used by 32-bit and
64-bit applications to manipulate large files.
In the transitional compilation environment, explicit 64-bit functions, structures, and types are added to the API. Compiling in this
environment allows both 32-bit and 64-bit applications to access files whose size is greater than or equal to 2 Gbyte ( 2**31 bytes).
The transitional compilation environment exports all the explicit 64-bit functions (xxx64()) and types in addition to all the regular func-
tions (xxx()) and types. Both xxx() and xxx64() functions are available to the program source. A 32-bit application must use the xxx64()
functions in order to access large files. See the lf64(5) manual page for a complete listing of the 64-bit transitional interfaces.
The transitional compilation environment differs from the large file compilation environment, wherein the underlying interfaces are bound
to 64-bit functions, structures, and types. An application compiled in the large file compilation environment is able to use the xxx()
source interfaces to access both large and small files, rather than having to explicitly utilize the transitional xxx64() interface calls
to access large files. See the lfcompile(5) manual page for more information regarding the large file compilation environment.
Applications may combine objects produced in the large file compilation environment with objects produced in the transitional compilation
environment, but must be careful with respect to interoperability between those objects. Applications should not declare global variables
of types whose sizes change between compilation environments.
For applications that do not wish to conform to the POSIX or X/Open specifications, the 64-bit transitional interfaces are available by
default. No compile-time flags need to be set.
Access to Additional Large File Interfaces
Applications that wish to access the transitional interfaces as well as the POSIX or X/Open specification-conforming interfaces should use
the following compilation methods and set whichever feature test macros are appropriate to obtain the desired environment (see stan-
dards(5)).
o Set the compile-time flag _LARGEFILE64_SOURCE to 1 before including any headers.
o Use the getconf(1) command with one or more of the following arguments:
+------------------+----------------------------------------+
| argument | purpose |
|LFS64_CFLAGS | obtain compilation flags necessary to |
| | enable the transitional compilation |
| | environment |
|LFS64_LDFLAGS | obtain link editor options |
|LFS64_LIBS | obtain link library names |
|LFS64_LINTFLAGS | obtain lint options |
+------------------+----------------------------------------+
EXAMPLES
In the following examples, the transitional compilation environment is accessed by invoking the getconf utility with one of the arguments
listed in the table above. The additional large file interfaces are accessed either by specifying -D_LARGEFILE64_SOURCE or by invoking the
getconf utility with the arguments listed above.
The example that uses the form of command substitution specifying the command within parentheses preceded by a dollar sign can be executed
only in a POSIX-conforming shell such as the Korn Shell (see ksh(1)). In a shell that is not POSIX-conforming, such as the Bourne Shell
(see sh(1)) and the C Shell (see csh(1)), the command must be enclosed within grave accent marks.
Example 1: An example of compiling a program using transitional interfaces such as lseek64() and fopen64():
$ c89 -D_LARGEFILE64_SOURCE
$(getconf LFS64_CFLAGS) a.c
$(getconf LFS64_LDFLAGS)
$(getconf LFS64_LIBS)
Example 2: An example of running lint on a program using transitional interfaces:
% lint -D_LARGEFILE64_SOURCE
`getconf LFS64_LINTFLAGS` ...
`getconf LFS64_LIBS`
SEE ALSO
getconf(1), lseek(2), fopen(3C), lf64(5), standards(5)
SunOS 5.10 26 Jan 1998 lfcompile64(5)