找到400785个回复
  • 用户被禁言,发言自动屏蔽。
  • 还有统计源码吗?
    9573点击 / 06-07 22:33发布 / 06-10 10:40回复 / /
    公开

    @hik,你这个我挂梯子都注册不了,十几年前用过但是忘记名字了
    掌缘生灭(白)

  • 还有统计源码吗?
    9573点击 / 06-07 22:33发布 / 06-10 10:31回复 / /
    公开

    @方妹@芯夏雨,我现在是在go里面写死了函数,感觉有点憨憨
    掌缘生灭(白)

  • 还有统计源码吗?
    9573点击 / 06-07 22:33发布 / 06-10 10:30回复 / /
    公开

    @hik,ok
    掌缘生灭(白)

  • @yingshaoxo,打包成docker镜像呢
    一加ace2Pro(灰|24+1024)

  • todesk远控太恶心了
    1114点击 / 05-28 02:47发布 / 06-10 07:44回复 / /
  • 用户被禁言,发言自动屏蔽。
  • 谁知道那有便宜的服务器卖。
    1353点击 / 06-03 19:36发布 / 06-10 06:54回复 / /

    @hui214,可能需要挂梯子,因为注册时会使用 reCaptcha 进行验证

  • @无名啊,flac吧音质好,文件体积小
    一加ace2Pro(灰|24+1024)

  • 用什么格式保存音乐好呢?有啥办法比较音质吗?
    44963点击 / 06-09 23:18发布 / 06-10 00:37回复 / /
    公开

    @咯叽,手机空间小,还是得挤挤水分,不然不够用。。

    为了能存下大量电视剧 / 有声书,我都被逼的找到这个 12 kbps 的格式了。。

  • todesk远控太恶心了
    1114点击 / 05-28 02:47发布 / 06-10 00:32回复 / /

    @胡椒舰长,headscale没有用这个,这个自建没有ui配置麻烦。
    用的tailscale官方协调控制
    一加8Pro

  • 用什么格式保存音乐好呢?有啥办法比较音质吗?
    44963点击 / 06-09 23:18发布 / 06-10 00:32回复 / /
    公开
    层主 @咯叽 于 2025-07-10 16:21 删除了该楼层。
  • 用什么格式保存音乐好呢?有啥办法比较音质吗?
    44963点击 / 06-09 23:18发布 / 06-10 00:18回复 / /
    公开

    @tasy5kg,诶。。尴尬,怎么 opus 的 UBB 是「链接」。。

    @老虎会游泳,是不是上传 opus 后,被识别成普通文件,而不是音乐了。。

  • 用什么格式保存音乐好呢?有啥办法比较音质吗?
    44963点击 / 06-09 23:18发布 / 06-10 00:13回复 / /
    公开

    为啥 opus 音乐不能在线预览呢

    我试了把 opus 的音频链接 UBB 设置成“音频流”就能在线预览了

  • 用什么格式保存音乐好呢?有啥办法比较音质吗?
    44963点击 / 06-09 23:18发布 / 06-09 23:49回复 / /
    公开

    @tasy5kg,现在纠结,该用 Opus、AAC-LC、xHE-AAC、MP3 哪种格式多少码率保存,音质损失最小。。

    知乎上,我就看到很多人说,🍎 256 Kbps AAC 音质最好,近乎无损。。

    但又有人说,AAC 容易变糊,MP3 听感更好。。(如该帖

    从 OPUS 曲线上看,确实不错。但我自己测试,极低时 opus 打不过 xHE-AAC。但又有人说 xHE-AAC 不适合高码率。。

    我已经凌乱了。。

  • 用什么格式保存音乐好呢?有啥办法比较音质吗?
    44963点击 / 06-09 23:18发布 / 06-09 23:37回复 / /
    公开

    @老虎会游泳,为啥 opus 音乐不能在线预览呢。。

    我看 caniuse 说,除了 🍎 MacOS 需要 15.4+,其他系统应该都支持了呀。。

  • 用什么格式保存音乐好呢?有啥办法比较音质吗?
    44963点击 / 06-09 23:18发布 / 06-09 23:35回复 / /
    公开

    @tasy5kg,居然不对比 xHE-AAC,感觉这格式挺优秀的呀,为啥这么多年都不流行。。

  • 用什么格式保存音乐好呢?有啥办法比较音质吗?
    44963点击 / 06-09 23:18发布 / 06-09 23:33回复 / /
    公开
    @无名啊
    https://trac.ffmpeg.org/wiki/Encode/HighQualityAudio#Encoders
    https://opus-codec.org/comparison/
  • 用什么格式保存音乐好呢?有啥办法比较音质吗?
    44963点击 / 06-09 23:18发布 / 06-09 23:26回复 / /
    公开

    @tasy5kg,你还记得,当时你是在哪儿看到,各种音频格式质量对比,

    才有了《2024年,将相册里的视频压缩为AV1编码》里的结论吗?

    有给出各码率质量分数曲线图📈之类的吗?

    音频使用libopus编码器,这是普遍认为音质最佳的有损编码器,并且受大部分设备和软件支持。

  • 这个问题我还真不知道,帮你问问Gemini 2.5 pro

    好的,这是一个非常经典且常见的Linux系统运维和开发问题。当你在一个低版本的Linux系统上运行一个在高版本系统上编译的程序时,经常会遇到 GLIBC_2.XX not found 的错误。

    这是因为程序在编译时,动态链接到了新版本的Glibc(GNU C Library)。Glibc为了向后兼容,使用了符号版本(Symbol Versioning)机制。你的程序需要一个新版本Glibc才提供的函数符号,而系统里的旧Glibc没有,所以无法运行。

    在开始之前,必须强调:

    警告:直接替换或升级系统底层的Glibc是一个极其危险的操作,99%的情况下会导致系统崩溃且无法启动。除非你完全明白你在做什么,否则绝对不要尝试全局替换 libc.so.6

    下面我将从最推荐到最不推荐的顺序列出几种绕过或解决Glibc版本不兼容问题的方法。


    方法一:最安全、最推荐的方法

    1. 升级你的操作系统

    这是最根本、最稳定、最安全的解决方案。如果条件允许,将你的操作系统(例如 CentOS 6/7 升级到 CentOS 8/Stream 或更高版本,Ubuntu 16.04 升级到 20.04/22.04)升级到一个支持所需Glibc版本的发行版。

    • 优点:一劳永逸,系统环境统一,安全补丁和功能都是最新的。
    • 缺点:在生产环境中可能难以实施,需要停机和大量测试。

    2. 使用容器技术(Docker, Podman)

    这是现代化的标准解决方案,也是我个人最推荐的“绕过”方法。它将应用及其所有依赖(包括需要的Glibc)打包到一个隔离的环境中运行,不影响宿主机系统。

    • 操作步骤

      1. 在你的旧系统上安装Docker或Podman。
      2. 创建一个 Dockerfile,选择一个包含新版Glibc的基础镜像(如 ubuntu:22.04debian:bullseye)。
      3. Dockerfile 中,将你的应用程序复制到镜像里。
      4. 构建并运行这个容器。
    • 示例 Dockerfile

      # 使用一个包含新版 Glibc 的基础镜像
      FROM ubuntu:22.04
      
      # 将你的二进制文件复制到容器中
      COPY ./your_program /usr/local/bin/your_program
      
      # 赋予执行权限
      RUN chmod +x /usr/local/bin/your_program
      
      # 设置容器启动时执行的命令
      CMD ["your_program"]
      
    • 优点

      • 完美隔离:完全不影响宿主机系统,零风险。
      • 环境一致性:确保开发、测试和生产环境完全一致。
      • 易于分发:打包成镜像后可以轻松部署到任何支持容器的机器上。
    • 缺点

      • 需要学习容器的基本知识。
      • 有一定的性能开销(尽管通常很小)。

    3. 在目标机器上重新编译

    如果你有应用程序的源代码,这是最直接的解决方法。

    • 操作步骤

      1. 在你的旧版本Linux系统上安装好编译工具链(gcc, g++, make 等)。
      2. 将源代码复制到这台机器上。
      3. 执行编译流程(./configure && make && make install)。
    • 优点:编译出的二进制文件会链接到系统自带的旧版Glibc,完美兼容。

    • 缺点

      • 必须拥有源代码。
      • 目标机器上可能缺少各种开发依赖库,安装它们可能很麻烦。

    方法二:高级“Hacker”方法(有风险,但可行)

    当你无法升级系统、无法使用容器、也没有源代码时,可以尝试以下方法。这些方法的核心思想是:不替换系统Glibc,而是让你的程序使用一个你单独提供的、新版本的Glibc。

    4. 使用 patchelf 工具修改程序的动态链接器和Rpath

    这是最常见的“黑科技”手段。patchelf 是一个可以修改ELF可执行文件动态链接信息的小工具。

    核心原理:

    1. 修改解释器(Interpreter):告诉操作系统,运行这个程序时,不要使用系统的加载器(如 /lib64/ld-linux-x86-64.so.2),而是使用我们指定的新版加载器。
    2. 修改运行时搜索路径(Rpath):告诉程序,运行时去我们指定的目录里寻找 .so 动态库文件,而不是只在系统默认路径(如 /lib64, /usr/lib64)里找。

    操作步骤:

    1. 准备新版Glibc文件

      • 从一个新版系统(或相应的 rpm/deb 包)中提取出Glibc相关文件。你需要 libc.so.6, ld-linux-x86-64.so.2 以及其他可能依赖的库(如 libpthread.so.0, libdl.so.2 等)。

      • 例如,在Debian/Ubuntu系统上,你可以下载libc6包并解压:

        # 找一个新版的 libc6 deb 包,比如从 packages.debian.org
        apt-get download libc6
        dpkg -x libc6_*.deb ./new_glibc_files
        
      • 将解压出来的 libetc 目录放到一个地方,例如 /opt/myapp/glibc/

      • 最终你的目录结构可能像这样:

        /opt/myapp/
        ├── your_program
        └── glibc/
            └── lib/
                └── x86_64-linux-gnu/
                    ├── ld-2.31.so  # 这是 ld-linux-x86-64.so.2 的实际文件
                    ├── libc-2.31.so # 这是 libc.so.6 的实际文件
                    ├── libc.so.6 -> libc-2.31.so (符号链接)
                    └── ... (其他 so 文件)
        
      • 找到新版加载器的确切路径,例如是 /opt/myapp/glibc/lib/x86_64-linux-gnu/ld-2.31.so

      • 找到新版库文件的目录,例如是 /opt/myapp/glibc/lib/x86_64-linux-gnu

    2. 安装 patchelf

      # บน CentOS/RHEL
      sudo yum install patchelf
      # บน Debian/Ubuntu
      sudo apt-get install patchelf
      
    3. 修改你的程序

      # 1. 修改 Interpreter
      patchelf --set-interpreter /opt/myapp/glibc/lib/x86_64-linux-gnu/ld-2.31.so your_program
      
      # 2. 修改 Rpath
      patchelf --set-rpath /opt/myapp/glibc/lib/x86_64-linux-gnu your_program
      

      注意ld-2.31.so 和路径要换成你自己的实际路径。

    4. 运行测试
      现在,直接运行 ./your_program,它应该就会使用你指定的Glibc版本了。

    • 优点:精确控制,只影响目标程序,不影响系统。
    • 缺点
      • 操作复杂,容易出错。
      • 你需要手动管理所有相关的Glibc库文件,如果依赖链很长,可能会很麻烦。
      • Glibc的一些功能(如NSS)可能因为环境变化而出现意想不到的问题。

    5. 使用 chrootproot

    chroot 是一个传统的工具,可以创建一个隔离的文件系统根目录。你可以在这个“伪根”里安装一套新版Linux系统的基本文件(包括Glibc),然后在其中运行你的程序。

    • 优点:比 patchelf 隔离性更好。
    • 缺点:设置比 patchelf 更复杂,通常需要root权限。proot 是一个用户态的 chroot 实现,不需要root,但性能更低。

    方法三:不推荐,但理论上可行

    6. 编译时静态链接

    如果在编译时,你就预见到了这个问题,可以尝试将程序静态链接。

    gcc -static my_program.c -o my_program
    
    • 优点:生成一个不依赖外部动态库的独立可执行文件,可移植性极高。
    • 缺点
      • Glibc官方不推荐:完全静态链接Glibc可能会导致DNS解析、用户/组查询等NSS(Name Service Switch)功能失效或行为异常。
      • 文件巨大:所有库都被打包进了可执行文件。
      • 安全更新困难:库有安全漏洞时,必须重新编译整个程序。

    总结与决策树

    方法 难度 风险 推荐度 适用场景
    升级操作系统 ★★★★★ 条件允许的任何情况,尤其是生产环境。
    使用容器 (Docker) 极低 ★★★★★ 现代应用部署的标准实践,强烈推荐。
    在目标机重新编译 ★★★★☆ 有源代码,且目标机可以安装编译环境。
    使用 patchelf ★★★☆☆ 没有源码、不能用容器时的“最后一招”。
    使用 chroot ★★☆☆☆ 需要比patchelf更强隔离性,且不介意复杂度的场景。
    静态链接 低(编译时) ★☆☆☆☆ 仅适用于非常简单、不涉及网络或用户查询的小工具。

    决策建议

    1. 首选方案:优先考虑 使用Docker容器。这是解决此类依赖问题的最佳实践。
    2. 次选方案:如果不能用容器,但有源代码,选择 在目标机重新编译
    3. 最后手段:如果以上都不行,再谨慎尝试 patchelf。动手前一定要备份好你的程序,并在测试环境中充分验证。

    避免直接操作系统的 /lib/lib64 目录,这是通往系统崩溃的捷径。