Sponsored Content
Top Forums Programming fread64 fwrite64 compilation problem (undefined symbol) Post 81049 by Corona688 on Tuesday 16th of August 2005 03:26:26 AM
Old 08-16-2005
It depends on which UNIX you're using. Standards are spotty in this area, or at least too new to be well-established.

On some, like 32-bit linux, there's no fundamental difference between large and small files; they're just....bigger. The same reading, writing, opening, and closing functions can be used for them -- the only problem they give the programmer is how to seek to a farther point than you can specify with a 32-bit integer. To get around this the linux kernel has one special 64-bit seek function, _llseek. It's a better idea to use a real API of some sort than a raw system call though.

32-bit Solaris, on the other hand, will apparently puke with an overflow error if you so much as open a large file without their large-file open! To get around this they provided <insert function name here>64 functions for nearly everything.

Looking in my linux system's stdio.h, I see fseeko64 and ftello64 functions. If your system has these or something like them, they might be all you need.

If you don't have these under stdio, you may need to use the underlying system functions.

Last edited by Corona688; 08-16-2005 at 04:34 AM..
 

10 More Discussions You Might Find Interesting

1. Programming

ld: 0711-317 ERROR: Undefined symbol: .hello

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

Undefined symbol: .getcury in getyx

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

shared object "undefined symbol: fstat" error

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

undefined symbol: clock_gettime' error

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

Undefined symbol: .log

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

Error: Undefined Symbol ..... First referenced in file......

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

ld: 0711-317 ERROR: Undefined symbol: stdscr

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

gmake undefined symbol error

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

Undefined Symbol

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

Undefined Symbol

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
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)
All times are GMT -4. The time now is 12:45 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy