brunner@metoch.uu.ch (felix brunner) (03/05/91)
I have some problems with ld (linker of C++, C resp.)! I am using Interactive Unix 2.2 and Glockenspiel C++ 2.0B. ld displays the following error message: fail to write symbol name 'symbol_name' in string table for file 'file_name' Does anybody now what's the reason of this error message ? How can I avoid it ? Where can I find information about ld's error messages ? (I couldn't find any information about ld's error messages neither in C manuals nor in UNIX manuals.) I expect my string table to have a length of less than 200'000 bytes. According to my UNIX manuals the maximum length of a string table is 2^32 - 4 bytes. I also made a test program with a string table length of more than 400'000 bytes, the length of the string table entries are 40 bytes. I had no problems to build the executable file of this test program, and I'm sure that the program that fails to link will have a smaller string table than the test program. Urs Wuest Mettler-Toledo AG Switzerland E-Mail: wuest@metoch.ch Phone: (0)1 944 30 83
nvk@ddsw1.MCS.COM (Norman Kohn) (03/14/91)
In article <815@metoch.uu.ch> brunner@metoch.uu.ch (felix brunner) writes: >I have some problems with ld (linker of C++, C resp.)! >I am using Interactive Unix 2.2 and Glockenspiel C++ 2.0B. > >ld displays the following error message: > fail to write symbol name 'symbol_name' in string table > for file 'file_name' I have encountered this with two versions of ld (ISC and UPORT) on a large software package. I concluded that the problem was the number of externs in my software: I successfully corrected it by taking large numbers of related storage and combining them into structs... i.e., int a,b; became struct {int a,b;}foo; so that references became foo.a and foo.b. Now a and b are defined offsets and the only extern is foo. I readily acknowledge that this should not help: a properly written linker should size its tables and files dynamically, and such large packages as emacs and gcc compile and link without trouble. I have not compared symbol table sizes. But the fix works, and I've left well enough alone. -- Norman Kohn | ...ddsw1!nvk Chicago, Il. | days/ans svc: (312) 650-6840 | eves: (312) 373-0564
cpcahil@virtech.uucp (Conor P. Cahill) (03/15/91)
>I have encountered this with two versions of ld (ISC and UPORT) >on a large software package. I concluded that the problem was >the number of externs in my software: I successfully corrected > >a properly written linker should size its tables and files >dynamically, and such large and a properly written program won't use much in the way of global variables :-} -- Conor P. Cahill (703)430-9247 Virtual Technologies, Inc. uunet!virtech!cpcahil 46030 Manekin Plaza, Suite 160 Sterling, VA 22170
martin@saturn.uucp (Martin J. Schedlbauer) (03/17/91)
In article <1991Mar14.140433.4397@ddsw1.MCS.COM> nvk@ddsw1.MCS.COM (Norman Kohn) writes: >In article <815@metoch.uu.ch> brunner@metoch.uu.ch (felix brunner) writes: >>I have some problems with ld (linker of C++, C resp.)! >> >>ld displays the following error message: >> fail to write symbol name 'symbol_name' in string table >> for file 'file_name' > > You are running out of disk space. I received a similar message once under Esix and a dfspace revealed that I had only 9 MB left. Cleaning out the file system increased the disk space and ld hummed along merrily. ...Martin -- ============================================================================== Martin J. Schedlbauer | martin@saturn.UUCP | ...!ulowell!saturn!martin 8 Gilman Road | mschedlb@ulowell.edu | ...!uunet!wang!saturn!martin Billerica, MA 01862 USA | CIS: 76675, 3364 | /\/\/\/\/\/\/\/\/\/\/\/\/\/\