对于Scientific Linux以及CentOS非必要不要升级任何文件
不要更新!不要更新!不要更新!
参考网址:爱编程的大丙
gcc与g++功能相同,仅仅针对不同的语言,以下说明以gcc为例
源文件->预处理->编译(预编译-语法检查、编译-优化生成中间文件)->链接->可执行文件
预处理:
gcc -E *.c > *.txt
编译:
gcc -c *.c (默认生成*.o文件-二进制文件)
链接:
# “-o”:指定输出目标文件名
gcc *.o -o *.exe
-c:汇编后得到二进制文件-》得到.o文件
-o:指定输出文件名字
-I:指定include包含文件的搜索目录
gcc *.c -Iinclude -o *.exe
gcc *.c -I include -o *.exe
gcc *.c -D DEBUG -o *.exe
作用
注意
静态库
gcc -c *.c
# 若无头文件需要用-I指定头文件路径
# -c自动生成*.o文件,无需-o指定
ar rcs libxxx.a *.o
# -c:无论库存在与否都将创建
# -s:创建目标文件索引,加快创建库的时间
# -r:在库中插入模块(替换)
gcc *.c -o *.exe -L ./path -l cali
动态库
gcc *.c -c -fpic
# -fpic:gcc生成的代码与位置无关,相对位置
gcc -shared *.o -o libxxx.so
# -shared: 告诉编译器生成一个动态链接库
gcc *.c -L ./path -l库名 -o cali
ctrl+V:可视化行模块;
ctrl+s:阻止之后的输入
依靠git,网络不稳定;
本说明以ubuntu20.04为例
使用命令安装gcc和g++
查看已经安装的gcc和g++版本
查看当前应用的gcc版本
需要设置优先级(由于ubuntu20.04中已经存在gcc9.3,以便选取对应版本的gcc)
选择gcc/g++版本
根据提示选择对应的gcc/g++版本
打开source.list文件
添加源地址
加载
#语法说明
#目标文件名:源文件名 #该行命令编译时会自动比较目标文件与所有源文件的时间戳!!!进而自动选择是否再次编译
# gcc 源文件名 -o 目标文件名
suanshu.exe:main.o jia.o jian.o
gcc main.o jia.o jian.o -o shuanshu.exe
main.o:main.c
gcc -c main.c -o main.o
jia.o:jia.c
gcc -c jia.c -o jia.o
jian.o:jian.c
gcc -c jian.c -o jian.o
clean:
rm -rf *.o suanshu.exe
#"*":通配符,任意个任意字符
#"$@":代表目标文件
#第一行中main.o要放到最前面
#"$<":一个一个匹配依赖
#"%":同一句中,%代码相同的名字
math.exe:main.o jia.o jian.o
gcc *.o -o $@
%.o:%.c
gcc -c $< -o $@
clean:
rm -rf *.o math.exe
#"$^":表示上一句中冒号后面所有依赖的文件(源文件)
OBJS=main.o jia.o jian.o
CC=gcc
#CFLAGS:编译选项
CFLAGS+=-c -Wall -g
math.exe:$(OBJS)
$(CC) $^ -o $@
%.o:%.c
$(CC) $^ $(CFLAGS) -o $@
clean:
rm -rf *.o math.exe
sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo'
Methed 1-new
dnf check-update
sudo dnf install code
Methed 2-old
yum check-update
sudo yum install code
参考网站:
方法简介:
"configurations": [
{
"name": "Linux",
"browse":
{
"path": [
"${workspaceFolder}/sim/src",
"${workspaceFolder}/sim/include",
"${workspaceFolder}/yblib/src",
"${workspaceFolder}/yblib/include",
"/opt/root61600/include",
"/opt/Geant4/geant41004/include/Geant4"
],
"limitSymbolsToIncludedHeaders": true
},
"includePath": [
"${workspaceFolder}/sim/src",
"${workspaceFolder}/sim/include",
"${workspaceFolder}/yblib/src",
"${workspaceFolder}/yblib/include",
"/opt/root61600/include",
"/opt/Geant4/geant41004/include/Geant4"
],
"defines": [],
"compilerPath": "/usr/bin/gcc",
"cStandard": "c89",
"cppStandard": "gnu++98",
"intelliSenseMode": "linux-gcc-x64"
}
],
"version": 4
}
#!/bin/bash
path="/mnt/backup/c2rootfile/"
while [ 0 -le 1 ]
do
message1=$(/usr/bin/ls -lhrt $path | tail -n 1)
echo $message1
sleep 10
message2=$(/usr/bin/ls -lhrt $path | tail -n 1)
echo $message2
sleep 10
echo $(/usr/bin/ls -hrt $path | wc -l)
echo "尚须拷贝文件数量:$[1087-$(/usr/bin/ls -hrt $path | wc -l)]"
if [ "$message1" = "$message2" ]
then
exit 1
fi
sleep 10
done
#!/bin/bash
path=$1
name=$2
find $path -name "*.*" | xargs grep $name
#!/usr/bin/bash
#for i in $(seq ${1} ${2})
for i in $(seq 207 458)
do
{
#if [ ${i} -gt 261 -a ${i} -lt 275 -o ${i} -gt 306 -a ${i} -lt 330 ]
#if [ ${i} -gt 261 -a ${i} -lt 275 -o ${i} -gt 306 -a ${i} -lt 330 -o ${i} -gt 362 -a ${i} -lt 365 -o ${i} -gt 367 -a ${i} -lt 371 -o ${i} -eq 389 ]
if [ ${i} -ge 262 -a ${i} -le 274 -o ${i} -ge 307 -a ${i} -le 329 -o ${i} -ge 363 -a ${i} -le 364 -o ${i} -ge 368 -a ${i} -le 370 -o ${i} -eq 389 ]
then
echo "In:the number ${i}!"
else
echo "Out:the number ${i}!"
fi
}
done
注意:在[ ]中不能用“&&“和” ||”!
#!/usr/bin/env bash
# 获取脚本开始时间
start_ns=$(date +%s%N)
start_us=${start_ns:0:16}
# 王东玺所用数据:207--458
# 束流刻度数据: 1030-1048
# 源刻度数据: 1065-1129
# 调束等无效数据:262-274,307-329,363,364,368-370,389
runlist=(207 220 225 248 300 350 400 450 458)
# ============= 脚本主体 =========================
trap "exec 1000>&-;exec 1000<&-;exit 0" 2
thread=20
tmpfifo=$$.fifo
mkfifo $tmpfifo
exec 1000<>$tmpfifo
rm -rf $tmpfifo
for ((i=1;i<=$thread;i++))
do
echo >&1000
done
# 从任务队列中依次读取任务
for i in $(seq 207 458)
#for i in $(seq ${1} ${2})
#for i in ${runlist[@]}
do
read -u1000
{
if [ ${i} -le 206 -o ${i} -ge 262 -a ${i} -le 274 -o ${i} -ge 307 -a ${i} -le 329 -o ${i} -ge 363 -a ${i} -le 364 -o ${i} -ge 368 -a ${i} -le 370 -o ${i} -eq 389 -o ${i} -ge 459 -a ${i} -le 1029 -o ${i} -ge 1049 -a ${i} -le 1064 -o ${i} -eq 1074 -o ${i} -eq 1077 -o ${i} -eq 1082 -o ${i} -eq 1093 -o ${i} -eq 1094 -o ${i} -eq 1103 -o ${i} -eq 1104 -o ${i} -eq 1107 -o ${i} -eq 1112 -o ${i} -eq 1115 -o ${i} -eq 1123 -o ${i} -ge 1130 ]
then
echo "the run of ${i} is bad!"
echo >&1000
else
echo ${i}
./tele ${i} &> ./log/${i}
echo >&1000
fi
} &
done
wait
exec 1000>&-
# ================================================
# 获取脚本结束时间,计算脚本运行时间
end_ns=$(date +%s%N)
end_us=${end_ns:0:16}
echo "==============================="
echo -n "cost time(s): "
echo "scale=3;($end_us-$start_us)/1000000" | bc
exit 0
本说明在北京大学网关掉线,而恰巧本人无法接触到自己主机无法手动登陆北大账户
!jupyter nbconvert Linuxtips_xi.ipynb --to html