eallenvii has asked for the wisdom of the Perl Monks concerning the following question:

Hello! I have a 32 bit machine and for some reason, even if i do it by hand or CPAN, make will only produce a 64 bit object file...here is the output.
CPAN: Storable loaded ok (v2.45) + + + [60/132] Reading '/app/shared/home/someuser/.cpan/Metadata' Database was generated on Mon, 22 Jun 2015 23:17:02 GMT Running install for module 'Clone' Running make for G/GA/GARU/Clone-0.38.tar.gz CPAN: Digest::SHA loaded ok (v5.71) CPAN: Compress::Zlib loaded ok (v2.048) Checksum for /app/shared/home/someuser/.cpan/sources/authors/id/G/GA/G +ARU/Clone-0.38.tar.gz ok Scanning cache /app/shared/home/someuser/.cpan/build for sizes ...................................................................... +......DONE CPAN: Archive::Tar loaded ok (v1.92) Clone-0.38/ Clone-0.38/Changes Clone-0.38/Clone.pm Clone-0.38/Clone.xs Clone-0.38/Makefile.PL Clone-0.38/MANIFEST Clone-0.38/META.json Clone-0.38/META.yml Clone-0.38/README Clone-0.38/t/ Clone-0.38/t/01array.t Clone-0.38/t/02hash.t Clone-0.38/t/03scalar.t Clone-0.38/t/04tie.t Clone-0.38/t/05dtype.t Clone-0.38/t/06refcnt.t Clone-0.38/t/07magic.t Clone-0.38/t/08fieldhash.t Clone-0.38/t/dclone.t /bin/tar: Read 8704 bytes from - Clone-0.38/t/dump.pl Clone-0.38/t/tied.pl CPAN: File::Temp loaded ok (v0.22) CPAN: Parse::CPAN::Meta loaded ok (v1.4414) CPAN: CPAN::Meta loaded ok (v2.150001) CPAN: Module::CoreList loaded ok (v2.99) CPAN.pm: Building G/GA/GARU/Clone-0.38.tar.gz Checking if your kit is complete... Looks good Generating a Unix-style Makefile Writing Makefile for Clone Writing MYMETA.yml and MYMETA.json cp Clone.pm blib/lib/Clone.pm AutoSplitting blib/lib/Clone.pm (blib/lib/auto/Clone) Running Mkbootstrap for Clone () chmod 644 "Clone.bs" "/software/perl/5.16.3/bin/perl" "/app/shared/home/someuser/src/tm/ss/ +src/shared/lib/cpan/lib/perl5/ExtUtils/xsubpp" -typemap "/software/p +erl/5.16.3/lib/5.16.3/ExtUtils/typemap" Clone.xs > Clone.xsc && mv C +lone.xsc Clone.c gcc -c -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/inc +lude -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O3 -DVERSION=\"0.3 +8\" -DXS_VERSION=\"0.38\" -fPIC "-I/software/perl/5.16.3/lib/5.16.3/i +386-linux/CORE" Clone.c rm -f blib/arch/auto/Clone/Clone.so gcc -shared -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions - +fstack-protector --param=ssp-buffer-size=4 -m32 -march=i386 -mtune=ge +neric -fasynchronous-unwind-tables -L/usr/local/lib Clone.o -o blib/ +arch/auto/Clone/Clone.so \ \ /usr/bin/ld: warning: i386:x86-64 architecture of input file `Clone.o' + is incompatible with i386 output Clone.o: In function `boot_Clone': Clone.c:(.text+0x2c): undefined reference to `PL_markstack_ptr' Clone.c:(.text+0x33): undefined reference to `PL_stack_sp' Clone.c:(.text+0x3a): undefined reference to `PL_stack_base' Clone.c:(.text+0x74): undefined reference to `Perl_xs_apiversion_bootc +heck' Clone.c:(.text+0x8b): undefined reference to `Perl_xs_version_bootchec +k' Clone.c:(.text+0xaf): undefined reference to `Perl_newXS_flags' Clone.c:(.text+0xb6): undefined reference to `PL_unitcheckav' Clone.c:(.text+0xc5): undefined reference to `PL_scopestack_ix' Clone.c:(.text+0xcd): undefined reference to `Perl_call_list' Clone.c:(.text+0xd7): undefined reference to `PL_sv_yes' Clone.c:(.text+0xe5): undefined reference to `PL_stack_sp' Clone.o: In function `sv_clone': Clone.c:(.text+0x193): undefined reference to `Perl_hv_common_key_len' Clone.c:(.text+0x1c8): undefined reference to `Perl_croak' Clone.c:(.text+0x1df): undefined reference to `Perl_newSVsv' Clone.c:(.text+0x20d): undefined reference to `Perl_hv_common_key_len' Clone.c:(.text+0x289): undefined reference to `Perl_sv_magic' Clone.c:(.text+0x2d1): undefined reference to `Perl_newSV_type' Clone.c:(.text+0x2e3): undefined reference to `Perl_newSV_type' Clone.c:(.text+0x30b): undefined reference to `Perl_mg_find' Clone.c:(.text+0x390): undefined reference to `Perl_sv_isobject' Clone.c:(.text+0x3ca): undefined reference to `Perl_hv_iterinit' Clone.c:(.text+0x3d6): undefined reference to `Perl_hv_iterkeysv' Clone.c:(.text+0x3e4): undefined reference to `Perl_hv_iterval' Clone.c:(.text+0x417): undefined reference to `Perl_hv_common' Clone.c:(.text+0x421): undefined reference to `Perl_hv_iternext_flags' Clone.c:(.text+0x442): undefined reference to `Perl_sv_bless' Clone.c:(.text+0x44f): undefined reference to `Perl_sv_rvweaken' Clone.c:(.text+0x468): undefined reference to `Perl_av_len' Clone.c:(.text+0x476): undefined reference to `Perl_av_extend' Clone.c:(.text+0x491): undefined reference to `Perl_av_fetch' Clone.c:(.text+0x4b3): undefined reference to `Perl_av_store' Clone.c:(.text+0x4c9): undefined reference to `Perl_sv_free' Clone.c:(.text+0x4d8): undefined reference to `Perl_sv_free2' Clone.c:(.text+0x50b): undefined reference to `Perl_croak' Clone.c:(.text+0x513): undefined reference to `Perl_sv_free' Clone.c:(.text+0x51d): undefined reference to `Perl_sv_free2' Clone.o: In function `XS_Clone_clone': Clone.c:(.text+0x555): undefined reference to `PL_markstack_ptr' Clone.c:(.text+0x55c): undefined reference to `PL_stack_sp' Clone.c:(.text+0x563): undefined reference to `PL_stack_base' Clone.c:(.text+0x5b6): undefined reference to `Perl_newSV_type' Clone.c:(.text+0x5f2): undefined reference to `Perl_hv_clear' Clone.c:(.text+0x618): undefined reference to `PL_stack_max' Clone.c:(.text+0x634): undefined reference to `Perl_stack_grow' Clone.c:(.text+0x643): undefined reference to `Perl_sv_2mortal' Clone.c:(.text+0x64e): undefined reference to `PL_stack_sp' Clone.c:(.text+0x67c): undefined reference to `Perl_sv_free' Clone.c:(.text+0x688): undefined reference to `Perl_sv_2iv_flags' Clone.c:(.text+0x699): undefined reference to `Perl_sv_free2' Clone.c:(.text+0x6ad): undefined reference to `Perl_croak_xs_usage' collect2: ld returned 1 exit status make: *** [blib/arch/auto/Clone/Clone.so] Error 1 GARU/Clone-0.38.tar.gz /usr/bin/make -- NOT OK CPAN: YAML loaded ok (v0.84) Running make test Can't test without successful make Running make install Make had returned bad status, install seems impossible
I'm not amazing at compiling at this level. Any guidance, system or otherwise, is greatly appreciated.

Replies are listed 'Best First'.
Re: Clone only compiling to 64 bit
by choroba (Cardinal) on Jun 23, 2015 at 00:22 UTC
    Are you sure the /app/shared/home/someuser/src/tm/ss/src/shared/lib/cpan/lib/perl5/ExtUtils/xsubpp is compatible with your Perl? Please add the output of
    perl -V
    too (note the capital V).
    لսႽ† ᥲᥒ⚪⟊Ⴙᘓᖇ Ꮅᘓᖇ⎱ Ⴙᥲ𝇋ƙᘓᖇ
      Turns out that for whatever reason Clone MakeFile.pl was not respecting any arguments that would tell it to use 32bit so i had to download, modify MakeFile to add -m32 to various FLAGS directives to get it to do the right thing.
Re: Clone only compiling to 64 bit
by eallenvii (Novice) on Jul 05, 2016 at 20:31 UTC
    Alright, im back, a year later...did this again! Found this post and was like...what the heck. Anyhow. A better answer.

    I did have to modify the MakeFile and add -m32 to the CCFLAGS declaration. This time i was using cpanm and everytime i reran it would redownload the source and overwrite my MakeFile changes.

    Thus i added --prompt and once it failed it asked me to retry again with the same source. I sat on this prompt and made the changes, then had it retry to success.

    However, my cowork notated that in the documentation for ExtUtils::MakeMaker it had the right option:

    cpanm --configure-args="CCFLAGS=-m32" --local-lib=/app/shared/lib/cpan + Clone@0.34