【问题标题】:I have a linker issue for node-gyp cross compile我有 node-gyp 交叉编译的链接器问题
【发布时间】:2020-03-13 14:31:26
【问题描述】:

我想做一个交叉编译 nodejs C++ 插件(node-gyp)。
环境设置如

export AR=/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi-ar
export CC=/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi-gcc 
export CXX=/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi-g++
export LINK=/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/arm-oe-linux-gnueabi-g++

这是我的 binding.gyp

{
  'targets': [
    {
      'target_name': 'binding',
      'sources': [ 'binding.cc' ],
      'includes': ['../common.gypi'],
      "cflags" : ['-march=armv7-a -mfloat-abi=softfp -mfpu=neon --sysroot=/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/armv7a-vfp-neon-oe-linux-gnueabi'],
    }
  ]
}

命令是'node-gyp --arch=arm configure build' 我认为编译已经通过,但链接器显示这样的错误。

SOLINK_MODULE(target) Release/obj.target/binding.node
/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/../../libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.9.2/ld: error: cannot open crti.o: No such file or directory
/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/../../libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.9.2/ld: error: cannot open crtbeginS.o: No such file or directory
/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/../../libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.9.2/ld: error: cannot open crtendS.o: No such file or directory
/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/../../libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.9.2/ld: error: cannot open crtn.o: No such file or directory
/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/../../libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.9.2/ld: error: cannot find -lstdc++
/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/../../libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.9.2/ld: error: cannot find -lm
/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/../../libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.9.2/ld: error: cannot find -lgcc_s
/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/../../libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.9.2/ld: error: cannot find -lpthread
/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/../../libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.9.2/ld: error: cannot find -lc
/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/x86_64-oesdk-linux/usr/bin/arm-oe-linux-gnueabi/../../libexec/arm-oe-linux-gnueabi/gcc/arm-oe-linux-gnueabi/4.9.2/ld: error: cannot find -lgcc_s
collect2: error: ld returned 1 exit status

有人有类似的问题吗?

【问题讨论】:

    标签: linker arm node-gyp cc


    【解决方案1】:

    我自己解决了这个问题。
    这是整个 binding.gyp 文件。

    {
      'targets': [
        {
          'target_name': 'binding',
          'sources': [ 'binding.cc' ],
          'includes': ['../common.gypi'],
          "cflags" : ['-march=armv7-a -mfloat-abi=softfp -mfpu=neon --sysroot=/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/armv7a-vfp-neon-oe-linux-gnueabi'],
          'link_settings': {"libraries": [ "-march=armv7-a -mfloat-abi=softfp -mfpu=neon --sysroot=/2nd-hdd/home/pkang/sdk/tm2sdk/sysroots/armv7a-vfp-neon-oe-linux-gnueabi"], },
        }
      ]
    }
    
    

    【讨论】:

      猜你喜欢
      • 2011-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      相关资源
      最近更新 更多