Makefileを使ってビルドしてみようとしているのですが、定義されていない参照です
エラーが出てしまい、ビルドできません。。。
ディレクトリ構造は以下のようにしています。
project_dir/ └src/ ├main/main.c ├dir/http.h http.c
上記のディレクトリの中でproject_dirとsrcにMakefileを置いています。
以下のような簡単なソースコードを作成し、ビルドしてみています。
C
1/*http.h*/ 2#include <stdio.h> 3#include <stdlib.h> 4#include <string.h> 5#include <curl/curl.h> 6 7extern int http(char *address);
C
1/*http.c*/ 2#include "http.h" 3 4int http(char *address) 5{ 6 CURL *curl; 7 8 char adr = &address; 9 /*ここでmainから受け取ったアドレスにアクセスしたい*/ 10 11 curl = curl_easy_init(); 12 curl_easy_setopt(curl, CURLOPT_URL, "https://qiita.com/"); 13 curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0); 14 15 curl_easy_perform(curl); 16 17 curl_easy_cleanup(curl); 18 19 return EXIT_SUCCESS; 20}
C
1/*main.c*/ 2#include <stdio.h> 3 4#include "http.h" 5 6 7int main() 8{ 9 printf("Hello, World.\n"); 10 11 char *adr = "https://qiita.com/"; 12 int ret; 13 ret = http(adr); 14 return 0; 15}
Makefile
1/*project_dir*/ 2CC = gcc 3 4TARGET = http_object 5 6SRC_DIR = ./src/main 7 8INCLUDE_PATHS := 9 10include ./src/Makefile 11 12$(TARGET): 13 $(CC) $(INCLUDE_PATHS) $(SRC_DIR)/main.c $< -o $@
Makefile
1/*src*/ 2INCLUDE_PATHS += -I./src/dir/.
コード中のポインタ部分などもそもそも間違っていると思いますが、上記をmakeすると、
/tmp/ccVirSiH.o: 関数 `main' 内: main.c:(.text+0xf2): `http' に対する定義されていない参照です collect2: error: ld returned 1 exit status Makefile:17: recipe for target 'http_object' failed make: *** [http_object] Error 1
上記のエラーが出てビルドできない状態です。
どのようにMakefileを修正すれば良いのでしょうか。
ご教示いただけますと幸いです。よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/11/19 00:34
退会済みユーザー
2019/11/19 00:46