【发布时间】:2014-01-31 16:03:54
【问题描述】:
我有这个 shell 脚本
#!/bin/csh
@ x = 1
while ($x <= 2)
nohup ./prog1 && ./prog2 &
@ x ++
end
我想顺序运行 2 次 prog1 和 prog2,它们之前是通过 makefile 编译的。我该怎么做?剧本对吗?
如果我这样做
chmod u+x test.csh
./test.csh
我收到此错误
./prog1: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./prog1)
这是我的makefile
GSLFLAGS := `pkg-config --cflags gsl`
LIBGSL := `pkg-config --libs gsl`
CFLAGS = -O3 -fopenmp
LIBOMP = -lgomp
dist.o:dist.cxx
g++ -Wall -c dist.cxx
prog1.o:prog1.cxx
g++ -Wall -c prog1.cxx $< ${GSLFLAGS} ${CFLAGS}
prog1:prog1.o dist.o
g++ ${CFLAGS} -o $@ $^ ${LIBGSL}
prog2.o:prog2.cxx
g++ -Wall -c prog2.cxx $< ${GSLFLAGS} ${CFLAGS}
prog2:prog2.o dist.o
g++ ${CFLAGS} -o $@ $^ ${LIBGSL}
【问题讨论】:
-
从 shell 运行
./prog1会得到什么? -
它工作正常,这就是奇怪的部分
-
你的普通shell是
/bin/csh吗?另外,从命令行运行nohup ./prog1也可以吗? -
是的 nohup ./prog1 也可以
-
我建议你在普通 shell 中运行“set | grep -i LIB”,然后输入与上面脚本第二行相同的命令。然后查看差异并查看在脚本中运行时缺少什么,然后更正脚本的库搜索路径。