Linux/Unix里,ln -s

本文详细解析了Linux系统中硬链接和软链接(ln和ln-s)的使用方法及原理,通过实例说明如何创建软链接,类似于Windows系统中的快捷方式,方便用户理解和应用。
这是硬/软链接的命令
ln -s 是创建软链接
ln 是创建硬链接

你可以理解为:相当于windows下创建快捷方式一样,所以就不用太多解释了吧。

ln -s /usr/lib/libX11.3 libX11.sl
libX11.sl就是快捷方式,点击它就能执行 libX11.3

转载于:https://www.cnblogs.com/Ph-one/p/5879371.html

from <stdin>:1: ../sysdeps/unix/sysv/linux/x86/include/asm/prctl.h:5:15: fatal error: asm/prctl.h: 没有那个文件或目录 #include_next <asm/prctl.h> ^~~~~~~~~~~~~ compilation terminated. if test -r /usr/local/src/glibc-2.28/build/csu/abi-tag.h.new; then mv -f /usr/local/src/glibc-2.28/build/csu/abi-tag.h.new /usr/local/src/glibc-2.28/build/csu/abi-tag.h; \ else echo >&2 'This configuration not matched in ../abi-tags'; exit 1; fi ../Makerules:287: recipe for target '/usr/local/src/glibc-2.28/build/tcb-offsets.h' failed make[2]: *** [/usr/local/src/glibc-2.28/build/tcb-offsets.h] Error 1 make[2]: *** 正在等待未完成的任务.... In file included from ../sysdeps/x86_64/nptl/tls.h:23:0, from ../sysdeps/unix/sysv/linux/x86_64/sysdep.h:24, from <stdin>:2: ../sysdeps/unix/sysv/linux/x86/include/asm/prctl.h:5:15: fatal error: asm/prctl.h: 没有那个文件或目录 #include_next <asm/prctl.h> ^~~~~~~~~~~~~ compilation terminated. ../Makerules:287: recipe for target '/usr/local/src/glibc-2.28/build/tlsdesc.h' failed make[2]: *** [/usr/local/src/glibc-2.28/build/tlsdesc.h] Error 1 In file included from ../sysdeps/x86_64/nptl/tls.h:23:0, from ../include/link.h:51, from <stdin>:1: ../sysdeps/unix/sysv/linux/x86/include/asm/prctl.h:5:15: fatal error: asm/prctl.h: 没有那个文件或目录 #include_next <asm/prctl.h> ^~~~~~~~~~~~~ compilation terminated. ../Makerules:287: recipe for target '/usr/local/src/glibc-2.28/build/link-defines.h' failed make[2]: *** [/usr/local/src/glibc-2.28/build/link-defines.h] Error 1 sed -n 's/^.*@@@name@@@\([^@]*\)@@@value@@@[^0-9Xxa-fA-F-]*\([0-9Xxa-fA-F-][0-9Xxa-fA-F-]*\).*@@@end@@@.*$/#define \1 \2/p' \ /usr/local/src/glibc-2.28/build/ucontext_i.hT3 > /usr/local/src/glibc-2.28/build/ucontext_i.hT In file included from ../sysdeps/x86_64/nptl/tls.h:23:0, from ../include/link.h:51, from ../include/dlfcn.h:4, from ../sysdeps/generic/ldsodefs.h:32, from ../sysdeps/x86/ldsodefs.h:64, from ../sysdeps/gnu/ldsodefs.h:46, from ../sysdeps/unix/sysv/linux/ldsodefs.h:25, from <stdin>:2: ../sysdeps/unix/sysv/linux/x86/include/asm/prctl.h:5:15: fatal error: asm/prctl.h: 没有那个文件或目录 #include_next <asm/prctl.h> ^~~~~~~~~~~~~ compilation terminated. In file included from ../sysdeps/x86_64/nptl/tls.h:23:0, from ../include/link.h:51, from ../include/dlfcn.h:4, from ../sysdeps/generic/ldsodefs.h:32, from ../sysdeps/x86/ldsodefs.h:64, from ../sysdeps/gnu/ldsodefs.h:46, from ../sysdeps/unix/sysv/linux/ldsodefs.h:25, from <stdin>:2: ../sysdeps/unix/sysv/linux/x86/include/asm/prctl.h:5:15: fatal error: asm/prctl.h: 没有那个文件或目录 #include_next <asm/prctl.h> ^~~~~~~~~~~~~ compilation terminated. ../Makerules:287: recipe for target '/usr/local/src/glibc-2.28/build/rtld-offsets.h' failed make[2]: *** [/usr/local/src/glibc-2.28/build/rtld-offsets.h] Error 1 ../Makerules:287: recipe for target '/usr/local/src/glibc-2.28/build/cpu-features-offsets.h' failed make[2]: *** [/usr/local/src/glibc-2.28/build/cpu-features-offsets.h] Error 1 rm -f /usr/local/src/glibc-2.28/build/ucontext_i.hT3 sed -e 's@ /usr/local/src/glibc-2\.28/build/@ $(common-objpfx)@g' -e 's@^/usr/local/src/glibc-2\.28/build/@$(common-objpfx)@g' -e 's@ *\.\.\/\([^ \]*\)@ $(..)\1@g' -e 's@^\.\.\/\([^ \]*\)@$(..)\1@g' \ /usr/local/src/glibc-2.28/build/ucontext_i.h.dT > /usr/local/src/glibc-2.28/build/ucontext_i.h.dT2 rm -f /usr/local/src/glibc-2.28/build/ucontext_i.h.dT mv -f /usr/local/src/glibc-2.28/build/ucontext_i.h.dT2 /usr/local/src/glibc-2.28/build/ucontext_i.h.d mv -f /usr/local/src/glibc-2.28/build/ucontext_i.hT /usr/local/src/glibc-2.28/build/ucontext_i.h make[2]: 离开目录“/usr/local/src/glibc-2.28/csu” Makefile:258: recipe for target 'csu/subdir_lib' failed make[1]: *** [csu/subdir_lib] Error 2 make[1]: 离开目录“/usr/local/src/glibc-2.28” Makefile:9: recipe for target 'all' failed make: *** [all] Error 2
11-08
[root@yfw ~]# cd /opt/openfire [root@yfw openfire]# cd /tmp [root@yfw tmp]# wget https://downloads.apache.org/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz --2025-10-03 07:44:49-- https://downloads.apache.org/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz Resolving downloads.apache.org (downloads.apache.org)... 135.181.214.104, 88.99.208.237, 2a01:4f8:10a:39da::2, ... Connecting to downloads.apache.org (downloads.apache.org)|135.181.214.104|:443... connected. HTTP request sent, awaiting response... 404 Not Found 2025-10-03 07:44:50 ERROR 404: Not Found. [root@yfw tmp]# wget https://mirror.sjtu.edu.cn/apache/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz --2025-10-03 07:45:13-- https://mirror.sjtu.edu.cn/apache/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz Resolving mirror.sjtu.edu.cn (mirror.sjtu.edu.cn)... 111.186.58.212 Connecting to mirror.sjtu.edu.cn (mirror.sjtu.edu.cn)|111.186.58.212|:443... connected. HTTP request sent, awaiting response... 404 Not Found 2025-10-03 07:45:14 ERROR 404: Not Found. [root@yfw tmp]# wget https://mirrors.aliyun.com/apache/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz --2025-10-03 07:45:34-- https://mirrors.aliyun.com/apache/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz Resolving mirrors.aliyun.com (mirrors.aliyun.com)... 124.95.175.51, 124.95.175.56, 124.95.175.52, ... Connecting to mirrors.aliyun.com (mirrors.aliyun.com)|124.95.175.51|:443... connected. HTTP request sent, awaiting response... 404 Not Found 2025-10-03 07:45:34 ERROR 404: Not Found. [root@yfw tmp]# wget https://dlcdn.apache.org/maven/maven-3/3.9.11/binaries/apache-maven-3.9.11-bin.tar.gz --2025-10-03 07:47:12-- https://dlcdn.apache.org/maven/maven-3/3.9.11/binaries/apache-maven-3.9.11-bin.tar.gz Resolving dlcdn.apache.org (dlcdn.apache.org)... 151.101.2.132, 2a04:4e42::644 Connecting to dlcdn.apache.org (dlcdn.apache.org)|151.101.2.132|:443... failed: Connection timed out. Connecting to dlcdn.apache.org (dlcdn.apache.org)|2a04:4e42::644|:443... failed: Network is unreachable. [root@yfw tmp]# [root@yfw tmp]# [root@yfw tmp]# [root@yfw tmp]# [root@yfw tmp]# wget https://dlcdn.apache.org/maven/maven-3/3.9.11/binaries/apache-maven-3.9.11-bin.zip --2025-10-03 07:50:59-- https://dlcdn.apache.org/maven/maven-3/3.9.11/binaries/apache-maven-3.9.11-bin.zip Resolving dlcdn.apache.org (dlcdn.apache.org)... 151.101.2.132, 2a04:4e42::644 Connecting to dlcdn.apache.org (dlcdn.apache.org)|151.101.2.132|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 9278421 (8.8M) [application/zip] Saving to: 'apache-maven-3.9.11-bin.zip' apache-maven-3.9.11-bin.zi 100%[======================================>] 8.85M 20.2KB/s in 6m 47s 2025-10-03 07:57:47 (22.2 KB/s) - 'apache-maven-3.9.11-bin.zip' saved [9278421/9278421] [root@yfw tmp]# cd /tmp [root@yfw tmp]# unzip apache-maven-3.9.11-bin.zip -d /opt/ Archive: apache-maven-3.9.11-bin.zip creating: /opt/apache-maven-3.9.11/ creating: /opt/apache-maven-3.9.11/lib/ creating: /opt/apache-maven-3.9.11/boot/ creating: /opt/apache-maven-3.9.11/lib/jansi-native/ creating: /opt/apache-maven-3.9.11/lib/jansi-native/Windows/ creating: /opt/apache-maven-3.9.11/lib/jansi-native/Windows/arm64/ creating: /opt/apache-maven-3.9.11/lib/jansi-native/Windows/x86/ creating: /opt/apache-maven-3.9.11/lib/jansi-native/Windows/x86_64/ creating: /opt/apache-maven-3.9.11/bin/ creating: /opt/apache-maven-3.9.11/conf/ creating: /opt/apache-maven-3.9.11/conf/logging/ creating: /opt/apache-maven-3.9.11/lib/ext/ creating: /opt/apache-maven-3.9.11/lib/ext/hazelcast/ creating: /opt/apache-maven-3.9.11/lib/ext/redisson/ inflating: /opt/apache-maven-3.9.11/README.txt inflating: /opt/apache-maven-3.9.11/LICENSE inflating: /opt/apache-maven-3.9.11/NOTICE inflating: /opt/apache-maven-3.9.11/lib/aopalliance.license inflating: /opt/apache-maven-3.9.11/lib/asm.license inflating: /opt/apache-maven-3.9.11/lib/commons-cli.license inflating: /opt/apache-maven-3.9.11/lib/commons-codec.license inflating: /opt/apache-maven-3.9.11/lib/error_prone_annotations.license inflating: /opt/apache-maven-3.9.11/lib/failureaccess.license inflating: /opt/apache-maven-3.9.11/lib/gson.license inflating: /opt/apache-maven-3.9.11/lib/guava.license inflating: /opt/apache-maven-3.9.11/lib/guice.license inflating: /opt/apache-maven-3.9.11/lib/httpclient.license inflating: /opt/apache-maven-3.9.11/lib/httpcore.license inflating: /opt/apache-maven-3.9.11/lib/jansi.license inflating: /opt/apache-maven-3.9.11/lib/javax.annotation-api.license inflating: /opt/apache-maven-3.9.11/lib/javax.inject.license inflating: /opt/apache-maven-3.9.11/lib/jcl-over-slf4j.license inflating: /opt/apache-maven-3.9.11/lib/jspecify.license inflating: /opt/apache-maven-3.9.11/lib/org.eclipse.sisu.inject.license inflating: /opt/apache-maven-3.9.11/lib/org.eclipse.sisu.plexus.license inflating: /opt/apache-maven-3.9.11/lib/plexus-cipher.license inflating: /opt/apache-maven-3.9.11/lib/plexus-component-annotations.license inflating: /opt/apache-maven-3.9.11/lib/plexus-interpolation.license inflating: /opt/apache-maven-3.9.11/lib/plexus-sec-dispatcher.license inflating: /opt/apache-maven-3.9.11/lib/plexus-utils.license inflating: /opt/apache-maven-3.9.11/lib/slf4j-api.license inflating: /opt/apache-maven-3.9.11/boot/plexus-classworlds.license inflating: /opt/apache-maven-3.9.11/lib/jansi-native/Windows/arm64/jansi.dll inflating: /opt/apache-maven-3.9.11/lib/jansi-native/Windows/x86/jansi.dll inflating: /opt/apache-maven-3.9.11/lib/jansi-native/Windows/x86_64/jansi.dll inflating: /opt/apache-maven-3.9.11/bin/m2.conf inflating: /opt/apache-maven-3.9.11/bin/mvn.cmd inflating: /opt/apache-maven-3.9.11/bin/mvnDebug.cmd inflating: /opt/apache-maven-3.9.11/bin/mvn inflating: /opt/apache-maven-3.9.11/bin/mvnDebug inflating: /opt/apache-maven-3.9.11/bin/mvnyjp inflating: /opt/apache-maven-3.9.11/conf/logging/simplelogger.properties inflating: /opt/apache-maven-3.9.11/conf/settings.xml inflating: /opt/apache-maven-3.9.11/conf/toolchains.xml inflating: /opt/apache-maven-3.9.11/lib/ext/README.txt inflating: /opt/apache-maven-3.9.11/lib/ext/hazelcast/README.txt inflating: /opt/apache-maven-3.9.11/lib/ext/redisson/README.txt inflating: /opt/apache-maven-3.9.11/lib/jansi-native/README.txt inflating: /opt/apache-maven-3.9.11/boot/plexus-classworlds-2.9.0.jar inflating: /opt/apache-maven-3.9.11/lib/jcl-over-slf4j-1.7.36.jar inflating: /opt/apache-maven-3.9.11/lib/aopalliance-1.0.jar inflating: /opt/apache-maven-3.9.11/lib/maven-resolver-connector-basic-1.9.24.jar inflating: /opt/apache-maven-3.9.11/lib/maven-settings-builder-3.9.11.jar inflating: /opt/apache-maven-3.9.11/lib/maven-artifact-3.9.11.jar inflating: /opt/apache-maven-3.9.11/lib/maven-compat-3.9.11.jar inflating: /opt/apache-maven-3.9.11/lib/slf4j-api-1.7.36.jar inflating: /opt/apache-maven-3.9.11/lib/org.eclipse.sisu.inject-0.9.0.M4.jar inflating: /opt/apache-maven-3.9.11/lib/jspecify-1.0.0.jar inflating: /opt/apache-maven-3.9.11/lib/wagon-provider-api-3.5.3.jar inflating: /opt/apache-maven-3.9.11/lib/guice-5.1.0-classes.jar inflating: /opt/apache-maven-3.9.11/lib/maven-slf4j-provider-3.9.11.jar inflating: /opt/apache-maven-3.9.11/lib/maven-resolver-named-locks-1.9.24.jar inflating: /opt/apache-maven-3.9.11/lib/javax.annotation-api-1.3.2.jar inflating: /opt/apache-maven-3.9.11/lib/commons-codec-1.18.0.jar inflating: /opt/apache-maven-3.9.11/lib/maven-resolver-transport-http-1.9.24.jar inflating: /opt/apache-maven-3.9.11/lib/maven-resolver-spi-1.9.24.jar inflating: /opt/apache-maven-3.9.11/lib/httpcore-4.4.16.jar inflating: /opt/apache-maven-3.9.11/lib/wagon-http-3.5.3.jar inflating: /opt/apache-maven-3.9.11/lib/org.eclipse.sisu.plexus-0.9.0.M4.jar inflating: /opt/apache-maven-3.9.11/lib/jansi-2.4.2.jar inflating: /opt/apache-maven-3.9.11/lib/maven-resolver-transport-file-1.9.24.jar inflating: /opt/apache-maven-3.9.11/lib/maven-plugin-api-3.9.11.jar inflating: /opt/apache-maven-3.9.11/lib/plexus-interpolation-1.28.jar inflating: /opt/apache-maven-3.9.11/lib/maven-resolver-transport-wagon-1.9.24.jar inflating: /opt/apache-maven-3.9.11/lib/plexus-utils-3.6.0.jar inflating: /opt/apache-maven-3.9.11/lib/plexus-cipher-2.0.jar inflating: /opt/apache-maven-3.9.11/lib/plexus-sec-dispatcher-2.0.jar inflating: /opt/apache-maven-3.9.11/lib/maven-resolver-provider-3.9.11.jar inflating: /opt/apache-maven-3.9.11/lib/maven-shared-utils-3.4.2.jar inflating: /opt/apache-maven-3.9.11/lib/wagon-file-3.5.3.jar inflating: /opt/apache-maven-3.9.11/lib/guava-33.4.8-jre.jar inflating: /opt/apache-maven-3.9.11/lib/gson-2.13.1.jar inflating: /opt/apache-maven-3.9.11/lib/asm-9.8.jar inflating: /opt/apache-maven-3.9.11/lib/maven-resolver-api-1.9.24.jar inflating: /opt/apache-maven-3.9.11/lib/maven-resolver-util-1.9.24.jar inflating: /opt/apache-maven-3.9.11/lib/maven-embedder-3.9.11.jar inflating: /opt/apache-maven-3.9.11/lib/maven-settings-3.9.11.jar inflating: /opt/apache-maven-3.9.11/lib/error_prone_annotations-2.38.0.jar inflating: /opt/apache-maven-3.9.11/lib/plexus-component-annotations-2.2.0.jar inflating: /opt/apache-maven-3.9.11/lib/javax.inject-1.jar inflating: /opt/apache-maven-3.9.11/lib/maven-model-3.9.11.jar inflating: /opt/apache-maven-3.9.11/lib/failureaccess-1.0.3.jar inflating: /opt/apache-maven-3.9.11/lib/maven-builder-support-3.9.11.jar inflating: /opt/apache-maven-3.9.11/lib/maven-repository-metadata-3.9.11.jar inflating: /opt/apache-maven-3.9.11/lib/maven-resolver-impl-1.9.24.jar inflating: /opt/apache-maven-3.9.11/lib/wagon-http-shared-3.5.3.jar inflating: /opt/apache-maven-3.9.11/lib/httpclient-4.5.14.jar inflating: /opt/apache-maven-3.9.11/lib/maven-core-3.9.11.jar inflating: /opt/apache-maven-3.9.11/lib/commons-cli-1.9.0.jar inflating: /opt/apache-maven-3.9.11/lib/maven-model-builder-3.9.11.jar [root@yfw tmp]# sudo ln -s /opt/apache-maven-3.9.11 /opt/maven [root@yfw tmp]# sudo tee /etc/profile.d/maven.sh << 'EOF' > export M2_HOME=/opt/maven > export PATH=$M2_HOME/bin:$PATH > EOF export M2_HOME=/opt/maven export PATH=$M2_HOME/bin:$PATH [root@yfw tmp]# source /etc/profile.d/maven.sh [root@yfw tmp]# mvn -version Apache Maven 3.9.11 (3e54c93a704957b63ee3494413a2b544fd3d825b) Maven home: /opt/maven Java version: 1.8.0_312, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/jre Default locale: en_US, platform encoding: ANSI_X3.4-1968 OS name: "linux", version: "4.18.0-348.7.1.el8_5.x86_64", arch: "amd64", family: "unix" [root@yfw tmp]# ls /usr/lib/jvm/ | grep -i openjdk-11 java-11-openjdk-11.0.13.0.8-4.el8_5.x86_64 jre-11-openjdk-11.0.13.0.8-4.el8_5.x86_64 [root@yfw tmp]# mvn -version Apache Maven 3.9.11 (3e54c93a704957b63ee3494413a2b544fd3d825b) Maven home: /opt/maven Java version: 1.8.0_312, vendor: Red Hat, Inc., runtime: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.312.b07-2.el8_5.x86_64/jre Default locale: en_US, platform encoding: ANSI_X3.4-1968 OS name: "linux", version: "4.18.0-348.7.1.el8_5.x86_64", arch: "amd64", family: "unix" [root@yfw tmp]# sudo tee /etc/profile.d/java-maven.sh << 'EOF' > # 设置 Java 11 为默认 JDK > export JAVA_HOME=/usr/lib/jvm/java-11-openjdk > > # 强制 Maven 使用 UTF-8 编码(解决 ANSI_X3.4-1968 问题) > export MAVEN_OPTS="-Dfile.encoding=UTF-8" > > # Maven 路径 > export M2_HOME=/opt/maven > export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH > > echo "✅ JAVA_HOME: $JAVA_HOME" > echo "✅ Maven home: $M2_HOME" > echo "✅ Java version: $(java -version 2>&1 | head -n 1)" > EOF # 设置 Java 11 为默认 JDK export JAVA_HOME=/usr/lib/jvm/java-11-openjdk # 强制 Maven 使用 UTF-8 编码(解决 ANSI_X3.4-1968 问题) export MAVEN_OPTS="-Dfile.encoding=UTF-8" # Maven 路径 export M2_HOME=/opt/maven export PATH=$JAVA_HOME/bin:$M2_HOME/bin:$PATH echo "✅ JAVA_HOME: $JAVA_HOME" echo "✅ Maven home: $M2_HOME" echo "✅ Java version: $(java -version 2>&1 | head -n 1)" [root@yfw tmp]# [root@yfw tmp]# # 删除旧的仅 Maven 配置(避免冲突) [root@yfw tmp]# sudo rm -f /etc/profile.d/maven.sh [root@yfw tmp]# [root@yfw tmp]# # 使用新的 java-maven.sh(上面已创建) [root@yfw tmp]# ls /etc/profile.d/java-maven.sh /etc/profile.d/java-maven.sh [root@yfw tmp]# cd ~ [root@yfw ~]# git clone https://github.com/igniterealtime/openfire-restAPI-plugin.git Cloning into 'openfire-restAPI-plugin'...
10-04
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值