- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我得到了一个 C 代码,它是用我想移植到 Windows 中的一些 Linux 衍生版本编写的。我对 Makefile 做了一些改动,并使用 mingw32-make 来编译它们。在我看到结果之前,生成的执行文件运行良好。
该程序用于进行一些数据分析,应生成 20 到 100 之间的数字列表。对于示例数据,应该有 3 个数字在 48.442 左右。
但是,当我运行 Windows 可执行文件时,我得到 3 个数字 2921363591658985300000000000000000000000000000.000
然后我安装了 virtualbox 并尝试使用“make”作为控制台命令运行原始 Makefile,但它提示说,没有请求数学库(pow 未定义等),尽管 -lm 被插入每个 gcc 命令。
Windows 生成文件:
COMPILER_OPT = -O3
all: extract_timestamps
extract_timestamps: extract_timestamps.c collection.o filename_treatment.o basic_analysis.o read_lecroy_file.o read_tek_file.o stamp_handling.o treat_lecroy_file.o treat_tek_file.o save_timestamps.o injection_statistics.o calc_time_stamp.o peak_finding.o get_timestamps.o time_ext.h -lm
gcc -lm -o extract_timestamps.exe basic_analysis.c calc_time_stamp.c collection.c extract_timestamps.c filename_treatment.c get_timestamps.c injection_statistics.c peak_finding.c read_lecroy_file.c read_tek_file.c save_timestamps.c stamp_handling.c treat_lecroy_file.c treat_tek_file.c $(COMPILER_OPT)
get_timestamps.o: get_timestamps.c time_ext.h
gcc $(COMPILER_OPT) -c get_timestamps.c -lm
peak_finding.o: peak_finding.c time_ext.h
gcc $(COMPILER_OPT) -c -o peak_finding.o peak_finding.c -lm
calc_time_stamp.o: calc_time_stamp.c time_ext.h
gcc $(COMPILER_OPT) -c -o calc_time_stamp.o calc_time_stamp.c -lm
injection_statistics.o: injection_statistics.c time_ext.h
gcc $(COMPILER_OPT) -c -o injection_statistics.o injection_statistics.c -lm
save_timestamps.o: save_timestamps.c time_ext.h
gcc $(COMPILER_OPT) -c -o save_timestamps.o save_timestamps.c -lm
filename_treatment.o: filename_treatment.c time_ext.h
gcc $(COMPILER_OPT) -c -o filename_treatment.o filename_treatment.c -lm
basic_analysis.o: basic_analysis.c time_ext.h
gcc $(COMPILER_OPT) -c -o basic_analysis.o basic_analysis.c -lm
collection.o: collection.c time_ext.h
gcc $(COMPILER_OPT) -c -o collection.o collection.c -lm
read_lecroy_file.o: read_lecroy_file.c time_ext.h
gcc $(COMPILER_OPT) -c -o read_lecroy_file.o read_lecroy_file.c -lm
read_tek_file.o: read_tek_file.c time_ext.h
gcc $(COMPILER_OPT) -c -o read_tek_file.o read_tek_file.c -lm
stamp_handling.o: stamp_handling.c time_ext.h
gcc $(COMPILER_OPT) -c -o stamp_handling.o stamp_handling.c -lm
treat_lecroy_file.o: treat_lecroy_file.c time_ext.h
gcc $(COMPILER_OPT) -c -o treat_lecroy_file.o treat_lecroy_file.c -lm
treat_tek_file.o: treat_tek_file.c time_ext.h
gcc $(COMPILER_OPT) -c -o treat_tek_file.o treat_tek_file.c -lm
clean:
delete filename_treatment.o basic_analysis.o collection.o read_lecroy_file.o stamp_handling.o treat_lecroy_file.o save_timestamps.o injection_statistics.o calc_time_stamp.o peak_finding.o extract_timestamps read_tek_file.o treat_tek_file.o
ubuntu 生成文件:
COMPILER_OPT = -O3
all: extract_timestamps
extract_timestamps: extract_timestamps.c filename_treatment.o basic_analysis.o collection.o \
read_lecroy_file.o read_tek_file.o stamp_handling.o treat_lecroy_file.o \
treat_tek_file.o save_timestamps.o injection_statistics.o calc_time_stamp.o \
peak_finding.o get_timestamps.o time_ext.h
gcc $(COMPILER_OPT) -o extract_timestamps extract_timestamps.c filename_treatment.o \
basic_analysis.o collection.o read_lecroy_file.o read_tek_file.o stamp_handling.o \
treat_lecroy_file.o treat_tek_file.o save_timestamps.o injection_statistics.o \
calc_time_stamp.o peak_finding.o get_timestamps.o; chmod go+rx extract_timestamps -lm
get_timestamps.o: get_timestamps.c time_ext.h
gcc $(COMPILER_OPT) -c get_timestamps.c -lm
peak_finding.o: peak_finding.c time_ext.h
gcc $(COMPILER_OPT) -c -o peak_finding.o peak_finding.c -lm
calc_time_stamp.o: calc_time_stamp.c time_ext.h
gcc $(COMPILER_OPT) -c -o calc_time_stamp.o calc_time_stamp.c -lm
injection_statistics.o: injection_statistics.c time_ext.h
gcc $(COMPILER_OPT) -c -o injection_statistics.o injection_statistics.c -lm
save_timestamps.o: save_timestamps.c time_ext.h
gcc $(COMPILER_OPT) -c -o save_timestamps.o save_timestamps.c -lm
filename_treatment.o: filename_treatment.c time_ext.h
gcc $(COMPILER_OPT) -c -o filename_treatment.o filename_treatment.c -lm
basic_analysis.o: basic_analysis.c time_ext.h
gcc $(COMPILER_OPT) -c -o basic_analysis.o basic_analysis.c -lm
collection.o: collection.c time_ext.h
gcc $(COMPILER_OPT) -c -o collection.o collection.c -lm
read_lecroy_file.o: read_lecroy_file.c time_ext.h
gcc $(COMPILER_OPT) -c -o read_lecroy_file.o read_lecroy_file.c -lm
read_tek_file.o: read_tek_file.c time_ext.h
gcc $(COMPILER_OPT) -c -o read_tek_file.o read_tek_file.c -lm
stamp_handling.o: stamp_handling.c time_ext.h
gcc $(COMPILER_OPT) -c -o stamp_handling.o stamp_handling.c -lm
treat_lecroy_file.o: treat_lecroy_file.c time_ext.h
gcc $(COMPILER_OPT) -c -o treat_lecroy_file.o treat_lecroy_file.c -lm
treat_tek_file.o: treat_tek_file.c time_ext.h
gcc $(COMPILER_OPT) -c -o treat_tek_file.o treat_tek_file.c -lm
clean:
rm filename_treatment.o basic_analysis.o collection.o \
read_lecroy_file.o stamp_handling.o treat_lecroy_file.o save_timestamps.o \
injection_statistics.o calc_time_stamp.o peak_finding.o \
read_tek_file.o treat_tek_file.o \
命令行命令是“mingw32-make.exe”和“make”,不带参数,在目录内。
不得不说,我一般不会那样直接编译的。
通常我会让自己被一些具有工作默认设置的 GUI 所安慰,这些 GUI 可以正确地编译一些东西。这可能就是为什么我在这里错过了一些基本的东西。
你能告诉我为什么 windows 可执行文件处理数字错误以及为什么我无法在 ubuntu 中编译吗?
编辑:
这是主要的 C 代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <unistd.h>
#include <getopt.h>
#include "time_ext.h"
#define DEBUG
//#undef DEBUG
typedef struct{
char Inputfile[64];
char Outputfile[64];
double Fraction;
int Shift;
double Threshold;
int timing;
int TekwithCapHeader; /* 1=tektronix with capital header letter,0=LeCroy */
int TekwithSmallHeader; /* 1=tektronix with small header letter,0=LeCroy */
}gParameters;
gParameters gParms={
"infile.dat",
"outfile.times",
0.5, /* fraction */
8, /* shift */
-8.0, /* threshold in volts */
2, /* timing method; 1=extrapolation to zero, 2=cfd,3=single threshold*/
0, /* type of the scope with a Capital header*/
0 /* type of the scope with a small header*/
};
main(int argc, char **argv){
int subroutine_return_value;
FILE *listfp,*outfp,*logfp;
char lecroyfilename[256],logfilename[256];
char tekfilename[256], tekheaderfilename[256];
/* int events=0,file_nr=0,shot=0,total_events=0; */
void *extr_parameters;
sTraceLimits limits;
int shot_number=0;
int number_of_shots;
int number_of_signals_in_shot, number_of_signals_total;
// int treat_lecroy_files(char *, FILE *, void *, FILE *,int, int *); /* might change */
uExtractedParameter get_extraction_parameter(void *, int, int);
void *parameter_collection(gParameters);
/* start code */
/* initialize some things */
if(getArgs(argc,argv)!=0){
printf(" !! invalid arguments.....\n ...... bye!\n");exit(-3);}
sprintf(logfilename,"%s.log",gParms.Outputfile);
if((listfp=fopen(gParms.Inputfile,"r"))==NULL){
fprintf(stderr," !! ERROR: can't open main-inputfile %s, terminating...\n",gParms.Inputfile);exit(-1);}
if((outfp=fopen(gParms.Outputfile,"w"))==NULL){
fprintf(stderr," !! ERROR: can't open outputfile %s, terminating...\n",gParms.Outputfile);exit(-1);}
if((logfp=fopen(logfilename,"w"))==NULL){
fprintf(stderr," !! ERROR: can't open logfile %s, terminating...\n",logfilename);exit(-1);}
fprintf(logfp,"logfile to outputfile %s created from inputfile %s\n"
"user-changeable settings:\n"
"shift = %d bins\tfraction = %le\tthreshold=%le V\n"\
"timing method=%2d\n"
"report on single files to follow\n\n",
gParms.Outputfile,gParms.Inputfile,
gParms.Shift,gParms.Fraction,gParms.Threshold,gParms.timing);
extr_parameters=parameter_collection(gParms);
limits.limits_active=LIMITS_INACTIVE;
/*** if switch -X or -x ****/
if((gParms.TekwithCapHeader ==1)||(gParms.TekwithSmallHeader ==1))
{
/* treat the Tektronix file */
while(!feof(listfp)){
fgets(tekfilename,256,listfp);
if(feof(listfp)) continue;
if(tekfilename[strlen(tekfilename)-1]=='\n')
tekfilename[strlen(tekfilename)-1]='\0';
#ifdef DEBUG
printf(" *starting treating file %s\n",tekfilename);
#endif
subroutine_return_value=treat_tek_file(tekfilename, tekheaderfilename,
outfp,extr_parameters,logfp,limits,
shot_number, &number_of_signals_in_shot, &number_of_shots);
/* does everything, or should do so at least ;-) */
/* but now handle the return_value !!! */
/* next sum the statistics, once it is returned by treat_lecroy_file */
if(number_of_signals_in_shot>0){
shot_number += number_of_shots;
number_of_signals_total+=number_of_signals_in_shot;
}
}
}
else
{
/* treat LeCroy file */
while(!feof(listfp)){
fgets(lecroyfilename,256,listfp);
if(feof(listfp)) continue;
if(lecroyfilename[strlen(lecroyfilename)-1]=='\n')
lecroyfilename[strlen(lecroyfilename)-1]='\0';
#ifdef DEBUG
printf(" *start treating file %s\n",lecroyfilename);
#endif
subroutine_return_value=treat_lecroy_file(lecroyfilename,outfp,extr_parameters,logfp,limits,
shot_number, &number_of_signals_in_shot);
/* does everything, or should do so at least ;-) */
/* but now handle the return_value !!! */
/* next sum the statistics, once it is returned by treat_lecroy_file */
if(number_of_signals_in_shot>0){
shot_number++;
number_of_signals_total+=number_of_signals_in_shot;
}
}
}
fclose(outfp);
fclose(logfp);
printf("\n");
}
/* **********************************8 subroutines ****************************************8 */
int getArgs(int argc,char **argv)
{ char opt;
int back=0;
int usage(char *);
if(argc==1) usage(argv[0]);
// while ((opt = (char)getopt(argc,argv,"hi:o:f:g:b:p:c:t:u:s:xX")) !=EOF)
while ((opt = (char)getopt(argc,argv,"hi:o:t:f:b:e:xX")) !=EOF)
{
switch(opt)
{
case 'h': usage(argv[0]); break;
case 'i': strcpy(gParms.Inputfile,optarg); break;
case 'o': strcpy(gParms.Outputfile,optarg); break;
case 't': gParms.Threshold=-fabs((double)atof(optarg)); break;
case 'f': gParms.Fraction=(double)atof(optarg); break;
case 'b': gParms.Shift=atoi(optarg); break;
case 'e': gParms.timing=atoi(optarg); break;
case 'x': gParms.TekwithSmallHeader=1; break;
case 'X': gParms.TekwithCapHeader=1; break;
/* case 'f': gParms.Minimum_efficiency=(double)atof(optarg); break; */
case '?': back=-1; break; /* to return error */
}
}
return(back);
}
int usage(char *programm)
{ fprintf(stderr,
"\n usage: %s \n\n"
" -h usage\n"
" -i [filename] inputfile Def: infile.dat\n"
" -o [filename] outputfile Def: outfile.times\n"
" -t [double] Threshold Def: -8. V \n"
" -f [double] Fraction Def: 0.5 \n"
" -b [int] Shift in bin Def: 4 \n"
" -e [int] Timestamps extraction Def: 1 \n"
" -x,X for Tektronix format \n\n"
" inputfile is one file containing a list of LeCroy or Tektornix Datafiles\n"
" outputfile contains timestamps in ns, shots separated by blank line\n"
" in addition a log-file (outputfile.log) is created\n"
" options t is the threshold, in fact threshold*sigma(of noise) is the threshold\n"
" For tektronix data (high sampling rate >= 20Gs/s): \n"
" -t: threshod, actual threshold is: threshold*sigma \n"
" -e: timing method. 1=extraploation to zero (by linear fit), 2=cfd (by linear fit).\n"
" -X, -x respectively correspond to *.WFD and *.wfd(header file),however, in my case \n"
" this does not matter, and the present version can deal with the header automatically \n"
" For LeCroy data (low sampling rate < 20 Gs/s): \n"
" -t: threshod, actual threshold is: threshold*sigma \n"
" -f: fraction, \n"
" -b: shift in bin, \n"
" time stamp discriminator: normal cfd, \n"
" Last modified 2008.10 Baohua Sun \n\n",
programm);
exit(-1);
}
生成文件见上输出Linux:
gcc -Wall -g -o extract_timestamps extract_timestamps.c filename_treatment.o \
basic_analysis.o collection.o read_lecroy_file.o read_tek_file.o stamp_handling.o \
treat_lecroy_file.o treat_tek_file.o save_timestamps.o injection_statistics.o \
calc_time_stamp.o peak_finding.o get_timestamps.o; chmod go+rx extract_timestamps -lm
extract_timestamps.c:37:1: Warnung: Rückgabetyp ist auf »int« voreingestellt [-Wreturn-type]
extract_timestamps.c: In Funktion »main«:
extract_timestamps.c:59:3: Warnung: Implizite Deklaration der Funktion »getArgs« [-Wimplicit-function-declaration]
extract_timestamps.c:93:7: Warnung: Implizite Deklaration der Funktion »treat_tek_file« [-Wimplicit-function-declaration]
extract_timestamps.c:122:5: Warnung: Implizite Deklaration der Funktion »treat_lecroy_file« [-Wimplicit-function-declaration]
extract_timestamps.c:38:7: Warnung: Variable »subroutine_return_value« gesetzt, aber nicht verwendet [-Wunused-but-set-variable]
extract_timestamps.c:140:1: Warnung: Kontrollfluss erreicht Ende von Nicht-void-Funktion [-Wreturn-type]
basic_analysis.o: In function `get_baseline':
basic_analysis.c:(.text+0x7b): undefined reference to `pow'
basic_analysis.c:(.text+0x216): undefined reference to `sqrt'
basic_analysis.c:(.text+0x241): undefined reference to `pow'
basic_analysis.c:(.text+0x263): undefined reference to `sqrt'
basic_analysis.o: In function `get_tek_baseline':
basic_analysis.c:(.text+0x2fb): undefined reference to `pow'
basic_analysis.c:(.text+0x496): undefined reference to `sqrt'
basic_analysis.c:(.text+0x4c1): undefined reference to `pow'
basic_analysis.c:(.text+0x4e3): undefined reference to `sqrt'
read_tek_file.o: In function `read_tek_data':
read_tek_file.c:(.text+0x362): undefined reference to `pow'
calc_time_stamp.o: In function `fitline':
calc_time_stamp.c:(.text+0x165): undefined reference to `sqrt'
calc_time_stamp.o: In function `timestamp_line':
calc_time_stamp.c:(.text+0x323): undefined reference to `sqrt'
calc_time_stamp.c:(.text+0x349): undefined reference to `sqrt'
calc_time_stamp.o: In function `timestamp_parabola1':
calc_time_stamp.c:(.text+0xc28): undefined reference to `sqrt'
calc_time_stamp.o: In function `timestamp_parabola2':
calc_time_stamp.c:(.text+0x1063): undefined reference to `pow'
calc_time_stamp.c:(.text+0x107f): undefined reference to `pow'
calc_time_stamp.c:(.text+0x10f2): undefined reference to `pow'
calc_time_stamp.c:(.text+0x116f): undefined reference to `pow'
calc_time_stamp.c:(.text+0x12a8): undefined reference to `sqrt'
calc_time_stamp.c:(.text+0x12e9): undefined reference to `sqrt'
calc_time_stamp.c:(.text+0x1333): undefined reference to `sqrt'
calc_time_stamp.c:(.text+0x1364): undefined reference to `sqrt'
calc_time_stamp.c:(.text+0x13c5): undefined reference to `sqrt'
calc_time_stamp.o:calc_time_stamp.c:(.text+0x144e): more undefined references to `sqrt' follow
collect2: ld gab 1 als Ende-Status zurück
chmod: Ungültige Option -- l
„chmod --help“ gibt weitere Informationen.
make: *** [extract_timestamps] Fehler 1
输出窗口:
gcc -lm -o extract_timestamps.exe basic_analysis.c calc_time_stamp.c collection.c extract_timestamps.c filename_treatment.c get_timestamps.c injection_statistics.c peak_finding.c read_lecroy_file.c read_tek_file.c save_timestamps.c stamp_handling.c treat_lecroy_file.c treat_tek_file.c -O3
filename_treatment.c: In Funktion »separate_filename«:
filename_treatment.c:23:26: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strrchr« [standardmäßig aktiviert]
filename_treatment.c:25:7: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strcpy« [standardmäßig aktiviert]
filename_treatment.c:28:11: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strlen« [standardmäßig aktiviert]
filename_treatment.c:32:5: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strncpy« [standardmäßig aktiviert]
filename_treatment.c:36:11: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strlen« [standardmäßig aktiviert]
filename_treatment.c:40:5: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strncpy« [standardmäßig aktiviert]
filename_treatment.c: In Funktion »make_tek_header_filename«:
filename_treatment.c:73:13: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strlen« [standardmäßig aktiviert]
filename_treatment.c:75:3: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strcpy« [standardmäßig aktiviert]
filename_treatment.c:77:20: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strrchr« [standardmäßig aktiviert]
filename_treatment.c:80:7: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strcat« [standardmäßig aktiviert]
filename_treatment.c:90:6: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strcat« [standardmäßig aktiviert]
filename_treatment.c:100:8: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strcat« [standardmäßig aktiviert]
filename_treatment.c:104:8: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strcat« [standardmäßig aktiviert]
read_lecroy_file.c: In Funktion »read_lecroy_header«:
read_lecroy_file.c:55:6: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strlen« [standardmäßig aktiviert]
read_lecroy_file.c:59:3: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strcpy« [standardmäßig aktiviert]
read_lecroy_file.c:69:3: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strcat« [standardmäßig aktiviert]
read_lecroy_file.c:134:8: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strncpy« [standardmäßig aktiviert]
read_lecroy_file.c: In Funktion »read_lecroy_data«:
read_lecroy_file.c:153:3: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strcpy« [standardmäßig aktiviert]
read_lecroy_file.c:154:3: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strcat« [standardmäßig aktiviert]
read_tek_file.c: In Funktion »read_tek_header«:
read_tek_file.c:67:7: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strcpy« [standardmäßig aktiviert]
read_tek_file.c:70:11: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strcat« [standardmäßig aktiviert]
read_tek_file.c:73:7: Warnung: Unverträgliche implizite Deklaration der eingebauten Funktion »strcat« [standardmäßig aktiviert]
编辑:执行 windows/linux 可执行文件的问题是我使用 windows 将文件列表作为输入文件。该程序得到了一个简单的文件名列表来搜索。但是,C 不喜欢\r\n,而只喜欢\n,所以它随机出现在数字和文件名上的尾部\r。Windows 生成文件正在运行,而 linux 生成文件已过时并且文件顺序错误等。
最佳答案
您的 Linux Makefile
错误(它将 -lm
传递给 chmod
命令,但 -lm
应该是作为最后一个参数传递给链接 gcc
命令)。请记住,gcc
的程序参数顺序非常重要。
您实际上并不需要 chmod
命令,如果需要,它应该在 Makefile
的单独行中>
您应该运行一次make -p
以了解make
已知的内置规则是什么。
尝试类似的东西
CC= gcc
CFLAGS= -g -Wall
LDLIBS= -lm
SOURCES= extract_timestamps.c filename_treatment.c basic_analysis.c \
collection.c read_lecroy_file.c read_tek_file.c \
stamp_handling.c treat_lecroy_file.c treat_tek_file.c \
save_timestamps.c injection_statistics.c calc_time_stamp.c \
peak_finding.c get_timestamps.c
OBJECTS= $(patsubst %.c, %.o, $(SOURCES))
.PHONY: all clean
all: extract_timestamps
extract_timestamps: $(OBJECTS)
$(LINK.c) $^ $(LOADLIBES) $(LDLIBS) -o $@
## add or autogenerate rules for object files.
在适当的时候用一个tab字符替换上面的多个空格。
上面的Makefile
还是不完整的。您需要完成它(并且您希望其中有一个 clean
目标)。参见 this example .您可能需要:
%.o: %.c time_ext.h
顺便说一句,我不建议在你的情况下使用像 cmake
这样的 Makefile
生成器。您的程序足够简单,可以通过普通的 Makefile
通过 GUI 编译是一个坏习惯(你可以在 emacs
中尝试 M-x compile
):GUI 工具正在运行命令来构建你的程序,它是把它们藏起来给你。因此,当出现问题时,您会变得无助。熟悉 Linux 命令,它们非常有帮助!
Windows 和 Linux 可执行文件(对于相同的源代码)之间的不同行为可能有很多原因:undefined behavior , 不同的实现方式 floating point -实现不仅依赖于处理器,还依赖于操作系统-,不同x86 calling conventions , 不同的编译器版本。写作 portable代码是一门困难的艺术。
改进您的代码,直到您没有收到编译器的警告和错误(例如使用 gcc -Wall
)
关于在 Win8/Ubuntu 上编译 Makefile 行为不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21883711/
我正在尝试使用以下命令在远程 Ubuntu 服务器的后台运行进程: sshpass -p PASSWORD ssh root@HOST 'nohup COMMAND-THAT-BLOCKS &' 不幸
普通 Ubuntu 和 ARM Ubuntu 有什么区别。我可以运行所有应用程序吗也在 ARM Ubuntu 中的普通 Ubuntu 下运行? Ubuntu 更新会自动发生吗? Torrent 下载器
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。 9年前关闭。 Improve this que
我正在尝试预置 Xenial 图像,它工作得很好,除了分区。 cloud-init 只能增长根分区,并且在使用扩展分区内的根文件系统构建镜像时不起作用: NAME MAJ:MIN RM SIZ
我对 Ubuntu 和 OpenFoam 真的很陌生,所以尝试学习并做一些教程。我正在使用 Docker 在 Ubuntu 上使用 OpenFoam。 我将文件夹复制到特定目录,但是当我尝试使用终端访
我在使用系统启动设置运行软件时遇到问题。我有 ubuntu 20.04。我试图将这些行插入到 etc/rc.local #!/bin/bash /usr/bin/clamonacc 它不起作用。第二次
TARGETS = client server CL_OBJ = clientMain.o Controller.o UI.o List.o Movie.o Server.o Serializer.o
我有一个 ubuntu服务器系统是8.04 hardy ,我在哪里安装rabbitmq。 rabbitmq依赖于 erlang-nox (>= 1:12.b.3) ,但是在当前的 ubuntu 版本中
我有一个用于开发的 Ubuntu virtualbox 设置。当我在文件中处于 org-mode 时,org-mode 的任何热键都不起作用(例如 M-RETURN 用于创建新标题)。我该怎么做才能让
我的 SchemaCrawler(版本 15.01.03)模式图在 Ubuntu 18.04 LTS 上截断表名。看起来表格通常被画得太窄,因为“[TABLE]”符号也开箱即用。在我的 Mac 上渲染
在 Ubuntu 中,设置应用程序中有几个地方有一个非常漂亮的 ListView ,带有添加/删除按钮,包括外观、键盘布局、隐私、蓝牙等。他们使用什么小部件?我开始使用 Glade 开发我的第一个 U
需要帮助卸载 jjrofiler。没有意识到它需要许可证。通过 .sh 可执行文件安装。 最佳答案 如果您转到 jProfiler 安装目录,您将找到名为 uninstall 的可执行文件,只需从终端
我一直在寻找几天,我没有想出解决方案。我是 ruby 新手,但我想通过使用 spree 开发自己的在线商店。 我使用:rails:Rails 3.2.13 ruby :ruby-1.9.3-p42
我尝试使用以下命令从/usr/local/bin 中删除我的 python2.7 和 python3 文件夹:sudo rm -rf python2.7 和 sudo rm -rf python3。后
在 ubuntu 服务器中(使用 ssh 协议(protocol)), 如何更改因不活动而断开连接的时间? 最佳答案 你能在 .bash_profile 中加入“exec screen -R”,在 .
我使用以下配置在 /etc/apache2/site-available/mysite.local 中创建了一个虚拟主机: ServerAdmin webmaster@localhost
我为大约 210 个用户新设置了一个代理服务器。它运行 ubuntu server 2012 和 squid3。问题是在凌晨 1:30 之后,如果用户尝试打开 google.com、youtube.c
gitlab-ci-multi-runner 1.0.2 (ea19241) Using Shell executor... Running on ip-... Cloning repository.
我有一个备份服务器,它每小时接收许多 rsync 连接。由于打开太多 rsync 实例可能会导致崩溃,我想使用 Semaphore 来限制并发实例的数量。 .我的想法是这样的: ssh root@ba
我有同一个库的多个版本,我的程序动态链接到这些库。有时我想更改使用的版本。 我一直在阅读,出于安全原因,新版本的 Ubuntu 不再支持 LD_LIBRARY_PATH。我可以将路径添加到 /etc/
我是一名优秀的程序员,十分优秀!