Opened 8 years ago
Closed 7 years ago
#1360 closed defect (fixed)
README instructions for building from git suggest setting LD_LIBRARY_PATH
Reported by: | Caolan McMahon | Owned by: | |
---|---|---|---|
Priority: | major | Milestone: | 4.13.0 |
Component: | unknown | Version: | 5.0.0 |
Keywords: | Cc: | ||
Estimated difficulty: | easy |
Description
The README suggests doing this when using a bootstrap chicken that is not installed. Perhaps unsurprisingly, it doesn't work. I got the following make error when attempting to build this way:
LD_LIBRARY_PATH=/vagrant/chicken-4.12.0/ make PLATFORM=linux CHICKEN=/vagrant/chicken-4.12.0/chicken ... /vagrant/chicken-4.12.0/chicken support.scm -optimize-level 2 -include-path . -include-path ./ -inline -ignore-repository -feature chicken-bootstrap -no-warnings -specialize -consult-type-file ./types.db -no-lambda-info -no-trace -emit-import-library chicken.compiler.support -output-file support.c /vagrant/chicken-4.12.0/chicken: symbol lookup error: /vagrant/chicken-4.12.0/chicken: undefined symbol: C_srfi_2d1_toplevel rules.make:873: recipe for target 'support.c' failed make: *** [support.c] Error 127
Here is the relevant section from the README:
2.2. Building from git If you build CHICKEN directly from the development sources out of the git repository, you will need a "chicken" executable to generate the compiled C files from the Scheme library sources. If you are building in a checkout where you have built other versions of chicken, you need to make sure that all traces of the previous build are removed. "make clean" is insufficient, and you should do the following: make PLATFORM=<platform> spotless If you have a recent version of CHICKEN installed, then pass "CHICKEN=<chicken-executable>" to the "make" invocation to override this setting. "CHICKEN" defaults to "chicken". If you do not have a "chicken" binary installed, you will have to build from the closest release tarball to the git version you are trying to build (significantly older or newer ones are unlikely to work), and then use that chicken to build from your git sources. You don't need to install the release tarball chicken; simply unpack and build it in its own directory with "make PLATFORM=<platform>", then use it to build your git chicken like so: LD_LIBRARY_PATH=<release dir> make PLATFORM=<platform> \ CHICKEN=<release dir>/chicken The LD_LIBRARY_PATH is needed on Linux to allow chicken to find libchicken; it may or may not be needed on your platform, but probably won't do any harm.
The solution for me was to install the chicken 4.12.0 I had built, then run "make PLATFORM=linux".
Change History (2)
comment:1 Changed 7 years ago by
Estimated difficulty: | → easy |
---|---|
Milestone: | someday → 4.13.0 |
comment:2 Changed 7 years ago by
Resolution: | → fixed |
---|---|
Status: | new → closed |
Fixed with 9d2f5bb73305fb41312ab6fc26cf97135b1e9f32 / 5cb3b1cb4b178db723df6a3b42066195fd8808c5
Note: See
TracTickets for help on using
tickets.
I think we should review this part of the README and maybe kick it out, because AFAIK indeed this won't (can't?) work.