Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在linux下用gcc命令编译C代码时如何包含lib_C++_C_Linux_Gcc_Centos - Fatal编程技术网

C++ 在linux下用gcc命令编译C代码时如何包含lib

C++ 在linux下用gcc命令编译C代码时如何包含lib,c++,c,linux,gcc,centos,C++,C,Linux,Gcc,Centos,我想用位于其他位置的头文件运行位于桌面上的C代码。编译和执行的合适GCC命令应该是什么?我已经附上下面的代码。在这方面,我请求善意的考虑和帮助 #include <config.h> #endif #include <stdio.h> #include <unistd.h> #include <string.h> #include <errno.h> #include <fcntl.h> #include </us

我想用位于其他位置的头文件运行位于桌面上的C代码。编译和执行的合适GCC命令应该是什么?我已经附上下面的代码。在这方面,我请求善意的考虑和帮助

#include <config.h>
#endif

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <fcntl.h>

#include </usr/include/pulse/simple.h>
#include </usr/include/pulse/error.h>

#define BUFSIZE 32

int main(int argc, char*argv[]) {

    /* The Sample format to use */
static const pa_sample_spec ss = {
    .format = PA_SAMPLE_S16LE,
    .rate = 44100,
    .channels = 2
};

pa_simple *s_in, *s_out = NULL;
int ret = 1;
int error;


/* Create a new playback stream */
if (!(s_out = pa_simple_new(NULL, argv[0], PA_STREAM_PLAYBACK, NULL, "playback", &ss, NULL, NULL, &error))) {
    fprintf(stderr, __FILE__": pa_simple_new() failed: %s\n", pa_strerror(error));
    goto finish;
}

  if (!(s_in = pa_simple_new(NULL, argv[0], PA_STREAM_RECORD, NULL, "record", &ss, NULL, NULL, &error))) {
    fprintf(stderr, __FILE__": pa_simple_new() failed: %s\n", pa_strerror(error));
    goto finish;
}

for (;;) {
    uint8_t buf[BUFSIZE];
    ssize_t r;

   #if 1
    pa_usec_t latency;

    if ((latency = pa_simple_get_latency(s_in, &error)) == (pa_usec_t) -1) {
        fprintf(stderr, __FILE__": pa_simple_get_latency() failed: %s\n", pa_strerror(error));
        goto finish;
    }

    fprintf(stderr, "In:  %0.0f usec    \r\n", (float)latency);

        if ((latency = pa_simple_get_latency(s_out, &error)) == (pa_usec_t) -1) {
        fprintf(stderr, __FILE__": pa_simple_get_latency() failed: %s\n",    pa_strerror(error));
            goto finish;
      }

        fprintf(stderr, "Out: %0.0f usec    \r\n", (float)latency);
#endif

        if (pa_simple_read(s_in, buf, sizeof(buf), &error) < 0) {

        fprintf(stderr, __FILE__": read() failed: %s\n", strerror(errno));
        goto finish;
    }

    /* ... and play it */
    if (pa_simple_write(s_out, buf, sizeof(buf), &error) < 0) {
        fprintf(stderr, __FILE__": pa_simple_write() failed: %s\n", pa_strerror(error));
        goto finish;
    }
}

/* Make sure that every single sample was played */
if (pa_simple_drain(s_out, &error) < 0) {
    fprintf(stderr, __FILE__": pa_simple_drain() failed: %s\n", pa_strerror(error));
    goto finish;
}

ret = 0;

finish:

if (s_in)
    pa_simple_free(s_in);
if (s_out)
    pa_simple_free(s_out);

return ret;
}
#包括
#恩迪夫
#包括
#包括
#包括
#包括
#包括
#包括
#包括
#定义BUFSIZE 32
int main(int argc,char*argv[]){
/*要使用的示例格式*/
静态常量样本规格ss={
.format=PA_SAMPLE_S16LE,
.费率=44100,
.频道=2
};
pa_simple*s_in,*s_out=NULL;
int-ret=1;
整数误差;
/*创建新的播放流*/
if(!(s_out=pa_simple_new(NULL,argv[0],pa_STREAM_PLAYBACK,NULL,“PLAYBACK”,&ss,NULL,NULL,error))){
fprintf(stderr,_文件:pa_simple_new()失败:%s\n“,pa_strerror(错误));
去完成;
}
if(!(s_in=pa_simple_new(NULL,argv[0],pa_STREAM_RECORD,NULL,“RECORD”,&ss,NULL,NULL,error))){
fprintf(stderr,_文件:pa_simple_new()失败:%s\n“,pa_strerror(错误));
去完成;
}
对于(;;){
uint8_t buf[BUFSIZE];
ssize_t r;
#如果1
使用延迟;
如果((延迟=pa_simple_get_延迟(s_in,&error))==(pa_usec_t)-1){
fprintf(stderr,_文件):pa_simple_get_latency()失败:%s\n,“pa_strerror(错误));
去完成;
}
fprintf(stderr,“In:%0.0f usec\r\n”,(float)延迟);
if((延迟=pa_simple_get_延迟(s_out,&error))==(pa_usec_t)-1){
fprintf(stderr,_文件):pa_simple_get_latency()失败:%s\n,“pa_strerror(错误));
去完成;
}
fprintf(标准,“输出:%0.0f usec\r\n”,(浮点)延迟);
#恩迪夫
如果(简单读取(s\U in、buf、sizeof(buf)和错误)<0){
fprintf(stderr,__文件:read()失败:%s\n“,strerror(errno));
去完成;
}
/*…然后玩它*/
如果(简单写入(s\U out、buf、sizeof(buf)和错误)<0){
fprintf(stderr,_文件:pa_simple_write()失败:%s\n“,pa_strerror(错误));
去完成;
}
}
/*确保播放了每个样本*/
如果(pa_简单_排水管(s_输出和错误)<0){
fprintf(stderr,_文件):pa_simple_drain()失败:%s\n,“pa_strerror(错误));
去完成;
}
ret=0;
完成:
如果(s_in)
简单免费(s_in);
如果(s_out)
简单免费(s_out);
返回ret;
}

尝试
gcc-c-I/path/to/source/files fileName.c
。请参见看起来您只需要替换此文件:

#include </usr/include/pulse/simple.h>
#include </usr/include/pulse/error.h>
您的命令行必须是这样的:

gcc -I"/usr/include/pulse" program.c -lpulse
您需要将“program.c”替换为源文件的名称

或者干脆用下两行替换这两行:

#include <pulse/simple.h>
#include <pulse/error.h>

C编译器包括头文件(通过
#include
)或通过以下方式:

  • #include“somename.h”
    :它开始搜索somefile.h的源目录,如果在那里找不到它,它开始看起来像(2)
  • #include
    :它搜索一系列(依赖于系统的)目录。在类Unix系统(Linux、MacOS)中,这基本上是
    /usr/include
    ,但可能会添加其他目录
  • 在大多数编译器中,您可以通过
    -I/some/path标志
    来控制这一点,该标志将
    /some/path
    添加到序列的开头(2)。还要注意,上面的
    somename.h
    可以包括
    /
    ,因此如果您编写

    #include "this/file.h"
    

    然后它在当前目录的
    这个
    目录中查找
    file.h

    您可以使用
    -I
    选项将目录添加到include路径。您可以编写完整的命令吗?它只是
    gcc-I”/path/to/folder/that/contains/the/headers”program.c
    我是这个平台上的新手。您是否会根据我的代码编写整个命令,其中头部位置在include指令中给出?请同时给出执行命令。我如何执行?请参阅我的代码,其中有两个头文件。我应该在路径中定义两个头文件吗?如果您根据代码中给出的“我的路径”编辑命令,这将非常有用。谢谢,您只需要包含包含标题的目录。编译器将自动为您选择它我没有得到u Shantanu。我是这个平台的新手。请为我提供示例。显示“对……的未定义引用”。位置是否将位于双引号(“”?@Naseef Ur Rahman“未定义引用…”是链接器错误。这意味着编译器找到了头,但链接器找不到相应的对象文件(或库)。尝试在命令中添加类似-lpulse的内容line@Naseef据我所知,你已经安装了pulse库,现在你需要链接它。因此,您的命令行将是“gcc program.c-lpulse”,并且您需要将头文件包括为“#include”(请参见上面我回答的最后几行),阅读Tushar给您的文章对您很有用:它包含了您问题的大部分答案
    gcc program.c -lpulse 
    
    #include "this/file.h"