Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

为啥 release 里的所有 aarch64 包,都是 x86-64 架构的呢? #154

Closed
wuxunfeng666 opened this issue Aug 31, 2024 · 6 comments
Closed

Comments

@wuxunfeng666
Copy link

这是这个插件的信息:

$ file libsimple*/*.so
libsimple-aarch64-linux-gnu-gcc-9/libsimple.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=37b831a21622a83263dbe83347421b2632a94be2, not stripped
libsimple-aarch64-linux-gnu-gcc/libsimple.so:   ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=83a8b043d8b1b46ac9c8aa68f102749c68fcd841, not stripped

查看 libsqlite3 的:

$ file /usr/lib/aarch64-linux-gnu/libsqlite3.so.0.8.6
/usr/lib/aarch64-linux-gnu/libsqlite3.so.0.8.6: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=f718ad7bb904e87edb0f5643c5c3fa415033c082, stripped

arm64 上的 SQLite 无论怎么写,都加载失败。。

$ sqlite3
SQLite version 3.45.1 2024-01-30 16:01:20
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .load ./libsimple-aarch64-linux-gnu-gcc/libsimple.so
Error: ./libsimple-aarch64-linux-gnu-gcc/libsimple.so.so: cannot open shared object file: No such file or directory
sqlite> .load ./libsimple-aarch64-linux-gnu-gcc/libsimple
Error: ./libsimple-aarch64-linux-gnu-gcc/libsimple.so: cannot open shared object file: No such file or directory
sqlite> .load './libsimple-aarch64-linux-gnu-gcc/libsimple'
Error: ./libsimple-aarch64-linux-gnu-gcc/libsimple.so: cannot open shared object file: No such file or directory
sqlite> .load './libsimple-aarch64-linux-gnu-gcc/libsimple.so'
Error: ./libsimple-aarch64-linux-gnu-gcc/libsimple.so.so: cannot open shared object file: No such file or directory
sqlite> .load './libsimple-aarch64-linux-gnu-gcc/simple'
Error: ./libsimple-aarch64-linux-gnu-gcc/simple.so: cannot open shared object file: No such file or directory
sqlite> .load './libsimple-aarch64-linux-gnu-gcc/simple.so'
Error: ./libsimple-aarch64-linux-gnu-gcc/simple.so.so: cannot open shared object file: No such file or directory
sqlite>
@wangfenjin
Copy link
Owner

.load ./libsimple-aarch64-linux-gnu-gcc/libsimple

No such file or directory

你看看报错啊。。。

@wuxunfeng666
Copy link
Author

@wangfenjin 文件是存在的,第一个代码框里,甚至都识别出是 x86-64 的动态库了。

后来我在 arm64 上重新编译后,能正常加载了。

第一个代码框,真不是代表《aarch64 包里的 .so,是 x86-64 架构》吗?

@wuxunfeng666
Copy link
Author

@wangfenjin 以下是详细执行过程,每句命令前附带注释,标明意图:

  1. 系统架构

    user@192.168.1.8's password:
    [LOGO]
    Welcome to Armbian OS 24.8.0 Noble with Linux 6.1.100-ophub
    
    # 七月份的系统,包含 Ubuntu Noble 的包,不算老旧以至于加载不上吧?
    user@armbian:~$ uname -a
    Linux armbian 6.1.100-ophub #1 SMP Thu Jul 25 01:56:29 EDT 2024 aarch64 aarch64 aarch64 GNU/Linux
  2. 自己编译后的库,正常加载,并使用 simple_query

    # 识别动态库文件类型
    user@armbian:~$ file ~/libsimple*/*.so
    /home/user/libsimple-aarch64-linux-gnu-gcc/libsimple.so: ELF 64-bit LSB shared object, ARM aarch64, version 1 (SYSV), dynamically linked, BuildID[sha1]=4fd8bb5ea11af51d5657463ad694d9b58ca2d679, not stripped
    
    # sqlite3 正常加载动态库,并使用库的函数
    user@armbian:~$ sqlite3
    SQLite version 3.45.1 2024-01-30 16:01:20
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .load /home/user/libsimple-aarch64-linux-gnu-gcc/libsimple.so
    sqlite> SELECT simple_query('Hello World');
    ( h+e+l+l+o* OR hello* ) AND ( w+o+r+l+d* OR world* )
    sqlite>
  3. 下载 release 里的库,架构不对,加载不了

    # 下载压缩包
    user@armbian:/dev/shm$ wget -nv 'https://github.com/wangfenjin/simple/releases/download/v0.4.0/libsimple-aarch64-linux-gnu-gcc.
    zip'
    2024-09-02 11:37:24 URL:https://objects.githubusercontent.com/github-production-release-asset-2e65be/244509610/8bf4e083-b5e0-4723-ba98-d4d1e9a6bac0?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=releaseassetproduction%2F20240902%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240902T033712Z&X-Amz-Expires=300&X-Amz-Signature=2a087c55c037bb58a102d59a255042d574befda3cabf2786cb9ac079526e62ee&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=244509610&response-content-disposition=attachment%3B%20filename%3Dlibsimple-aarch64-linux-gnu-gcc.zip&response-content-type=application%2Foctet-stream [5319987/5319987] -> "libsimple-aarch64-linux-gnu-gcc.zip" [1]
    
    # 解压
    user@armbian:/dev/shm$ unzip libsimple*.zip
    Archive:  libsimple-aarch64-linux-gnu-gcc.zip
       creating: libsimple-aarch64-linux-gnu-gcc/
       creating: libsimple-aarch64-linux-gnu-gcc/dict/
      inflating: libsimple-aarch64-linux-gnu-gcc/dict/README.md
      inflating: libsimple-aarch64-linux-gnu-gcc/dict/stop_words.utf8
      inflating: libsimple-aarch64-linux-gnu-gcc/dict/jieba.dict.utf8
     extracting: libsimple-aarch64-linux-gnu-gcc/dict/user.dict.utf8
       creating: libsimple-aarch64-linux-gnu-gcc/dict/pos_dict/
      inflating: libsimple-aarch64-linux-gnu-gcc/dict/pos_dict/prob_start.utf8
      inflating: libsimple-aarch64-linux-gnu-gcc/dict/pos_dict/char_state_tab.utf8
      inflating: libsimple-aarch64-linux-gnu-gcc/dict/pos_dict/prob_emit.utf8
      inflating: libsimple-aarch64-linux-gnu-gcc/dict/pos_dict/prob_trans.utf8
      inflating: libsimple-aarch64-linux-gnu-gcc/dict/hmm_model.utf8
      inflating: libsimple-aarch64-linux-gnu-gcc/dict/idf.utf8
      inflating: libsimple-aarch64-linux-gnu-gcc/libsimple.so
    
    # 识别文件类型
    user@armbian:/dev/shm$ file */*.so
    libsimple-aarch64-linux-gnu-gcc/libsimple.so: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=83a8b043d8b1b46ac9c8aa68f102749c68fcd841, not stripped
    
    # sqlite3 加载不上
    user@armbian:/dev/shm$ sqlite3
    SQLite version 3.45.1 2024-01-30 16:01:20
    Enter ".help" for usage hints.
    Connected to a transient in-memory database.
    Use ".open FILENAME" to reopen on a persistent database.
    sqlite> .load /dev/shm/libsimple-aarch64-linux-gnu-gcc/libsimple.so
    Error: /dev/shm/libsimple-aarch64-linux-gnu-gcc/libsimple.so.so: cannot open shared object file: No such file or directory
    sqlite>

@wangfenjin
Copy link
Owner

我看下吧

@wangfenjin
Copy link
Owner

https://github.blog/news-insights/product-news/arm64-on-github-actions-powering-faster-more-efficient-build-systems/#get-started-using-arm-hosted-runners-today

可能是现在用的 qemu 模拟的方式有点问题,可以等年底 github 支持 arm 设备之后更新下脚本

@wangfenjin
Copy link
Owner

close as of #168

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants