Skip to content

Wrong linker path when building from source #358

Description

@bnoordhuis

At commit 99a166d. Fresh checkout.

$ bundle install
# ...
Bundle complete! 7 Gemfile dependencies, 20 gems now installed.                                                                                                
Bundled gems are installed into `./vendor/bundle`
$ bundle exec rake compile
mkdir -p tmp/x86_64-linux-gnu/mini_racer_loader/3.3.4                                                                                                          
cd tmp/x86_64-linux-gnu/mini_racer_loader/3.3.4                                                                                                                
/usr/bin/ruby3.3 -I. ../../../../ext/mini_racer_loader/extconf.rb                                                                                              
creating Makefile                                                                                                                                              
cd -                                                                                                                                                           
cd tmp/x86_64-linux-gnu/mini_racer_loader/3.3.4                                                                                                                
/usr/bin/gmake                                                                                                                                                 
compiling ../../../../ext/mini_racer_loader/mini_racer_loader.c                                                                                                
linking shared-object mini_racer_loader.so                                                                                                                     
cd -                                                                                                                                                           
mkdir -p tmp/x86_64-linux-gnu/stage/lib                                                                                                                        
cp CHANGELOG tmp/x86_64-linux-gnu/stage/CHANGELOG                                                                                                              
cp CODE_OF_CONDUCT.md tmp/x86_64-linux-gnu/stage/CODE_OF_CONDUCT.md                                                                                            
cp LICENSE.txt tmp/x86_64-linux-gnu/stage/LICENSE.txt                                                                                                          
cp README.md tmp/x86_64-linux-gnu/stage/README.md                                                                                                              
mkdir -p tmp/x86_64-linux-gnu/stage/ext/mini_racer_extension                                                                                                   
cp ext/mini_racer_extension/extconf.rb tmp/x86_64-linux-gnu/stage/ext/mini_racer_extension/extconf.rb                                                          
cp ext/mini_racer_extension/mini_racer_extension.c tmp/x86_64-linux-gnu/stage/ext/mini_racer_extension/mini_racer_extension.c                                  
cp ext/mini_racer_extension/mini_racer_v8.cc tmp/x86_64-linux-gnu/stage/ext/mini_racer_extension/mini_racer_v8.cc                                              
cp ext/mini_racer_extension/mini_racer_v8.h tmp/x86_64-linux-gnu/stage/ext/mini_racer_extension/mini_racer_v8.h
cp ext/mini_racer_extension/serde.c tmp/x86_64-linux-gnu/stage/ext/mini_racer_extension/serde.c
mkdir -p tmp/x86_64-linux-gnu/stage/ext/mini_racer_loader
cp ext/mini_racer_loader/extconf.rb tmp/x86_64-linux-gnu/stage/ext/mini_racer_loader/extconf.rb
cp ext/mini_racer_loader/mini_racer_loader.c tmp/x86_64-linux-gnu/stage/ext/mini_racer_loader/mini_racer_loader.c
cp lib/mini_racer.rb tmp/x86_64-linux-gnu/stage/lib/mini_racer.rb
mkdir -p tmp/x86_64-linux-gnu/stage/lib/mini_racer
cp lib/mini_racer/shared.rb tmp/x86_64-linux-gnu/stage/lib/mini_racer/shared.rb 
cp lib/mini_racer/truffleruby.rb tmp/x86_64-linux-gnu/stage/lib/mini_racer/truffleruby.rb
cp lib/mini_racer/version.rb tmp/x86_64-linux-gnu/stage/lib/mini_racer/version.rb
/usr/bin/gmake install sitearchdir=../../../../lib sitelibdir=../../../../lib target_prefix=
/usr/bin/install -c -m 0755 mini_racer_loader.so ../../../../lib
cp tmp/x86_64-linux-gnu/mini_racer_loader/3.3.4/mini_racer_loader.so tmp/x86_64-linux-gnu/stage/lib/mini_racer_loader.so
mkdir -p tmp/x86_64-linux-gnu/mini_racer_extension/3.3.4
cd tmp/x86_64-linux-gnu/mini_racer_extension/3.3.4
/usr/bin/ruby3.3 -I. ../../../../ext/mini_racer_extension/extconf.rb
checking for -lpthread... yes
checking for whether -Wl,--exclude-libs=ALL  is accepted as LDFLAGS... no
creating Makefile
cd -
cd tmp/x86_64-linux-gnu/mini_racer_extension/3.3.4
/usr/bin/gmake
compiling ../../../../ext/mini_racer_extension/mini_racer_extension.c
compiling ../../../../ext/mini_racer_extension/mini_racer_v8.cc
linking shared-object mini_racer_extension.so
/usr/bin/ld: cannot find /home/bnoordhuis/src/mini_racer/vendor/bundle/ruby/3.3.0/gems/libv8-node-24.1.0.0-x86_64-linux/vendor/v8/x86_64-linux-gnu/libv8/obj/libv8_monolith.a: No such file or directory
collect2: error: ld returned 1 exit status
gmake: *** [Makefile:265: mini_racer_extension.so] Error 1
rake aborted!
Command failed with status (2): [/usr/bin/gmake]
/home/bnoordhuis/src/mini_racer/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.2.7/lib/rake/extensiontask.rb:195:in `block (2 levels) in define_compile_tasks'
/home/bnoordhuis/src/mini_racer/vendor/bundle/ruby/3.3.0/gems/rake-compiler-1.2.7/lib/rake/extensiontask.rb:194:in `block in define_compile_tasks'
/home/bnoordhuis/src/mini_racer/vendor/bundle/ruby/3.3.0/gems/rake-13.2.1/exe/rake:27:in `<top (required)>'
Tasks: TOP => compile => compile:x86_64-linux-gnu => compile:mini_racer_extension:x86_64-linux-gnu => copy:mini_racer_extension:x86_64-linux-gnu:3.3.4 => tmp/x
86_64-linux-gnu/mini_racer_extension/3.3.4/mini_racer_extension.so
(See full trace by running task with --trace)

libv8_monolith.a does exist but it lives in:

vendor/bundle/ruby/3.3.0/gems/libv8-node-24.1.0.0-x86_64-linux/vendor/v8/x86_64-linux

Vs. what the linker looks for (note the -gnu):

vendor/bundle/ruby/3.3.0/gems/libv8-node-24.1.0.0-x86_64-linux/vendor/v8/x86_64-linux-gnu

The system on which this happens:

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=24.10
DISTRIB_CODENAME=oracular
DISTRIB_DESCRIPTION="Ubuntu 24.10"

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions