Note that there are some explanatory texts on larger screens.

plurals
  1. POgcc ld: symbol(s) not found for architecture x86_64
    primarykey
    data
    text
    <p>Alright so I'm making a lexer and a parser using Ocamlyacc. I've done my research and I think it's something to do with my makefile not picking the right bit version for my compiler or something like it? I don't know much about makefiles which is why I'm asking. </p> <p>I've run my program on another computer where it works without trouble so it gotta be something to do with my machine.</p> <p>It's a MacBook Pro 64 bit. I'm using Xcode 4.2.1. </p> <p>Here's the makefile:</p> <pre><code>SHELL = /bin/sh C_C = gcc CPP_C = g++ ifdef GPROF C_CPP_FLAGS = -pg -O3 else ifndef DEBUG C_CPP_FLAGS = -O3 else C_CPP_FLAGS = -g endif endif C_LD = $(C_C) CPP_LD = $(CPP_C) C_YACC = bison C_LEX = flex AR = ar RANLIB = ranlib OCAML_C = ocamlc OCAML_OPT_C = ocamlopt ifdef GPROF OCAML_C_FLAGS = -dtypes OCAML_OPT_C_FLAGS = -dtypes OCAML_LD = $(OCAML_C) -g OCAML_OPT_LD = $(OCAML_OPT_C) -p else ifndef DEBUG OCAML_C_FLAGS = -dtypes OCAML_OPT_C_FLAGS = -dtypes OCAML_LD = $(OCAML_C) -g OCAML_OPT_LD = $(OCAML_OPT_C) else OCAML_C_FLAGS = -dtypes OCAML_OPT_C_FLAGS = -dtypes OCAML_LD = $(OCAML_C) -g OCAML_OPT_LD = $(OCAML_OPT_C) endif endif OCAML_MKTOP = ocamlmktop OCAML_CP = ocamlcp OCAML_DEP = ocamldep OCAML_LEX = ocamllex OCAML_YACC = ocamlyacc OCAML_C_CPP_INC = -I $(shell $(OCAML_C) -v | tail -1 | sed -e \ 's/^Standard library directory: //') </code></pre> <p>The error that I'm getting is:</p> <pre><code>ld: symbol(s) not found for architecture x86_64 </code></pre> <p>Here's the full output:</p> <pre><code>make Linking OCAML (top level) program nanoml.top ocamlmktop -o nanoml.top -custom nano.cmo nanoLex.cmo nanoParse.cmo main.cmo \ -cc g++ -cclib ' ' /var/folders/n3/jgblhwmj40lchgq71bmgr8sw0000gn/T/camlprimbd6a63.c:784: warning: deprecated conversion from string constant to ‘char*’ . . //The same line ALOT of times. Removed due to limit of chars in a single post. . /var/folders/n3/jgblhwmj40lchgq71bmgr8sw0000gn/T/camlprimbd6a63.c:784: warning: deprecated conversion from string constant to ‘char*’ ld: warning: ignoring file /usr/local/lib/ocaml/libcamlrun.a, file was built for archive which is not the architecture being linked (x86_64) Undefined symbols for architecture x86_64: "_main", referenced from: start in crt1.10.6.o "_caml_alloc_dummy", referenced from: _caml_builtin_cprim in ccZbZ9Mf.o . . //And many of these lines . "_caml_get_exception_backtrace", referenced from: _caml_builtin_cprim in ccZbZ9Mf.o ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status File "_none_", line 1, characters 0-1: Error: Error while building custom runtime system make: *** [nanoml.top] Error 2 </code></pre> <p>Thank you in advance!</p> <p>EDIT: I'm only using Ocaml. No C++ or C that needs to be linked with it. I've never tried running my ocaml code with a makefile before but I can run other ocaml code on this computer. This is the first time it fails but it is the first time I use a makefile.</p> <p>And the same makefile and code works on other machines(older machines though) so I think it has something to do with this one using 64 bits.</p> <p>I found I've been given another makefile which looks like this:</p> <pre><code># Generic compilation rules %.o : %.c @echo Compiling C file $&lt; $(C_C) $(C_CPP_FLAGS) $(C_CPP_INCLUDES) -c $&lt; -o $@ %.o : %.cc @echo Compiling C++ file $&lt; $(CPP_C) $(C_CPP_FLAGS) $(C_CPP_INCLUDES) -c $&lt; -o $@ %.o : %.cpp @echo Compiling C++ file $&lt; $(CPP_C) $(C_CPP_FLAGS) $(C_CPP_INCLUDES) -c $&lt; -o $@ %.cmi: %.mli @echo Compiling OCAML interface $&lt; $(OCAML_C) $(OCAML_C_FLAGS) $(OCAML_INCLUDES) -c $&lt; -o $@ %.cmo: %.ml @echo Compiling \(to byte code\) OCAML module $&lt; $(OCAML_C) $(OCAML_C_FLAGS) $(OCAML_INCLUDES) -c $&lt; -o $@ %.cmx: %.ml @echo Compiling \(to native code\) OCAML module $&lt; $(OCAML_OPT_C) $(OCAML_OPT_C_FLAGS) $(OCAML_INCLUDES) -c $&lt; -o $@ %.ml: %.mll @echo Lexing OCAML file $&lt; $(OCAML_LEX) $&lt; %.ml %.mli: %.mly @echo Yaccing OCAML file $&lt; $(OCAML_YACC) $&lt; # Generic cleaning rules default-clean: rm -f *~ *.o *.cmo *.cmx .*.depend *.cmi .PHONY: default-clean # Generic link rules and library creation rules # # These rules assume that the following variables are set (when necessary): # # - C_EXE : name of the C executable # - CPP_EXE : name of the C++ executable # - OCAML_EXE : name of the OCaml executable (without suffix) # - OCAML_TPL_EXE : name of the OCaml custom toplevel (without suffix) # - C_CPP_LIB : name of the C/C++ library # - OCAML_LIB : name of the OCaml library (without suffix) # - C_CPP_EXE_OBJ : list of C/C++ objects (without suffix) to build exe # - OCAML_EXE_OBJ : list of OCaml modules (without suffix) to build exe # - C_CPP_LIB_OBJ : list of C/C++ objects (without suffix) to build lib # - OCAML_LIB_OBJ : list of OCaml modules (without suffix) to build lib # - C_CPP_LD_FLAGS : C and C++ linker flags # - OCAML_LD_FLAGS : OCaml linker (both native and bytecode) flags # - C_CPP_LD_LIBS : C and C++ linker libraries # - OCAML_LD_LIBS : OCaml linker (both native and bytecode) libraries ifdef C_EXE $(C_EXE): $(C_CPP_EXE_OBJ:%=%.o) @echo Linking C program $@ $(C_LD) $(C_CPP_LD_FLAGS) -o $@ $(C_CPP_EXE_OBJ:%=%.o) $(C_CPP_LD_LIBS) endif ifdef CPP_EXE $(CPP_EXE): $(C_CPP_EXE_OBJ:%=%.o) @echo Linking C++ program $@ $(CPP_LD) $(C_CPP_LD_FLAGS) -o $@ $(C_CPP_EXE_OBJ:%=%.o) $(C_CPP_LD_LIBS) endif ifdef C_CPP_LIB $(C_CPP_LIB).a: $(C_CPP_LIB_OBJ:%=%.o) @echo Creating C/C++ library $@ $(AR) r $@ $? $(RANLIB) $@ endif ifdef OCAML_EXE $(OCAML_EXE).byte: $(C_CPP_EXE_OBJ:%=%.o) $(OCAML_EXE_OBJ:%=%.cmo) @echo Linking OCAML \(byte code\) program $@ $(OCAML_LD) $(OCAML_LD_FLAGS) -o $@ -custom $(OCAML_LD_LIBS:%=%.cma) $(C_CPP_EXE_OBJ:%=%.o) $(OCAML_EXE_OBJ:%=%.cmo) \ -cc $(CPP_C) -cclib '$(C_CPP_LD_FLAGS) $(C_CPP_LD_LIBS)' $(OCAML_EXE).opt: $(C_CPP_EXE_OBJ:%=%.o) $(OCAML_EXE_OBJ:%=%.cmx) @echo Linking OCAML \(native code\) program $@ $(OCAML_OPT_LD) $(OCAML_LD_FLAGS) -o $@ $(OCAML_LD_LIBS:%=%.cmxa) $(C_CPP_EXE_OBJ:%=%.o) $(OCAML_EXE_OBJ:%=%.cmx) \ -cc $(CPP_C) -cclib '$(C_CPP_LD_FLAGS) $(C_CPP_LD_LIBS)' $(OCAML_EXE).top: $(C_CPP_EXE_OBJ:%=%.o) $(OCAML_EXE_OBJ:%=%.cmo) @echo Linking OCAML \(top level\) program $@ $(OCAML_MKTOP) $(OCAML_LD_FLAGS) -o $@ -custom $(OCAML_LD_LIBS:%=%.cma) $(C_CPP_EXE_OBJ:%=%.o) $(OCAML_EXE_OBJ:%=%.cmo) \ -cc $(CPP_C) -cclib '$(C_CPP_LD_FLAGS) $(C_CPP_LD_LIBS)' endif ifdef OCAML_TPL_EXE $(OCAML_TPL_EXE).byte: $(C_CPP_EXE_OBJ:%=%.o) $(OCAML_EXE_OBJ:%=%.cmo) @echo Linking OCAML \(byte code\) toplevel $@ $(OCAML_MKTOP) $(OCAML_LD_FLAGS) -o $@ -custom $(OCAML_LD_LIBS:%=%.cma) $(C_CPP_EXE_OBJ:%=%.o) $(OCAML_EXE_OBJ:%=%.cmo) \ -cc $(CPP_C) -cclib '$(C_CPP_LD_FLAGS) $(C_CPP_LD_LIBS)' endif ifdef OCAML_LIB $(OCAML_LIB).cma: $(OCAML_LIB_OBJ:%=%.cmo) @echo Creating OCAML \(byte code\) library $@ $(OCAML_LD) $(OCAML_LD_FLAGS) -a -o $@ $(OCAML_LIB_OBJ:%=%.cmo) $(OCAML_LIB).cmxa $(OCAML_LIB).a: $(OCAML_LIB_OBJ:%=%.cmx) @echo Creating OCAML \(native code\) library $@ $(OCAML_OPT_LD) $(OCAML_LD_FLAGS) -a -o $@ $(OCAML_LIB_OBJ:%=%.cmx) endif ifdef OCAML_CINTF ifdef OCAML_BYTECODE_CINTF $(OCAML_CINTF).o: $(OCAML_CINTF_OBJ:%=%.cmo) @echo Creating OCAML \(native code\) C interface library $@ $(OCAML_LD) $(OCAML_LD_FLAGS) -output-obj -o $@ $(OCAML_LD_LIBS:%=%.cma) $(OCAML_CINTF_OBJ:%=%.cmo) $(OCAML_CINTF_LIB).a: $(OCAML_CINTF).o $(C_CPP_CINTF_OBJ:%=%.o) @echo Creating C/C++ interface library $@ $(AR) r $@ $? $(RANLIB) $@ else $(OCAML_CINTF).o: $(OCAML_CINTF_OBJ:%=%.cmx) @echo Creating OCAML \(native code\) C interface library $@ $(OCAML_OPT_LD) $(OCAML_LD_FLAGS) -output-obj -o $@ $(OCAML_LD_LIBS:%=%.cmxa) $(OCAML_CINTF_OBJ:%=%.cmx) $(OCAML_CINTF_LIB).a: $(OCAML_CINTF).o $(C_CPP_CINTF_OBJ:%=%.o) @echo Creating C/C++ interface library $@ $(AR) r $@ $? $(RANLIB) $@ endif endif # Generic dependencies creation rules .%.mli.depend: %.mli @echo Generating dependencies for OCAML interface $&lt; $(OCAML_DEP) $&lt; &gt; $@ .%.ml.depend: %.ml @echo Generating dependencies for OCAML module $&lt; $(OCAML_DEP) $&lt; &gt; $@ </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload