C compile: collect2: error: ld returned 1 exit status
Próbowałem poszukać tego błędu w Internecie, ale wszystkie posty są dla C++.
Oto wiadomość:
Test1.o: in function
ReadDictionary': /home/johnny/Desktop/haggai/test1.c:13: undefined reference to
CreateDictionary' collect2: error: ld returned 1 exit status make: * * * [test1] Error 1
Super prosty kod i nie rozumiem w czym problem
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "dict.h"
#include "hash.h"
pHash ReadDictionary() {
/* This function reads a dictionary line by line from the standard input. */
pHash dictionary;
char entryLine[100] = "";
char *word, *translation;
dictionary = CreateDictionary();
while (scanf("%s", entryLine) == 1) { // Not EOF
word = strtok(entryLine, "=");
translation = strtok(NULL, "=");
AddTranslation(dictionary, word, translation);
}
return dictionary;
}
int main() {
pHash dicti;
...
Teraz jest to nagłówek dict.h
#ifndef _DICT_H_
#define _DICT_H_
#include "hash.h"
pHash CreateDictionary();
...
#endif
A oto dict.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "hash.h"
#include "dict.h"
pHash CreateDectionary()
{
pHash newDict;
newDict= HashCreate(650, HashWord, PrintEntry, CompareWords, GetEntryKey, DestroyEntry);
return newDict;
}
I jeśli chcesz sprawdzić hash.h
#ifndef _HASH_H_
#define _HASH_H_
//type defintions//
typedef enum {FAIL = 0, SUCCESS} Result;
typedef enum {SAME = 0, DIFFERENT} CompResult;
typedef struct _Hash Hash, *pHash;
typedef void* pElement;
typedef void* pKey;
//function types//
typedef int (*HashFunc) (pKey key, int size);
typedef Result (*PrintFunc) (pElement element);
typedef CompResult (*CompareFunc) (pKey key1, pKey key2);
typedef pKey (*GetKeyFunc) (pElement element);
typedef void (*DestroyFunc)(pElement element);
...
//interface functions//
#endif
Może będzie łatwiej, jeśli dam ci te akta?
W jakikolwiek sposób, będę szczęśliwy za wskazówki, jak zrozumieć problem
7 answers
Twoim problemem jest literówka w funkcji utworzoneje C ().Należy zmienić go na CreateDictionary (). collect2: error: LD returned 1 exit status to ten sam problem zarówno w C jak i C++, zwykle oznacza to, że masz nierozwiązane symbole. W Twoim przypadku jest literówka, o której wspomniałem wcześniej.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-21 20:15:49
Czasami ten błąd pojawiał się, ponieważ nie udało się skompilować w środku jakiejkolwiek kompilacji. Najlepszym sposobem na wypróbowanie jest wykonanie make clean i ponownie wykonanie całego kodu .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-08 11:51:30
Install this
sudo apt install libgl-dev libglu-dev libglib2.0-dev libsm-dev libxrender-dev libfontconfig1-dev libxext-dev
Http://www.qtcentre.org/threads/69625-collect2-error-ld-returned-1-exit-status
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-14 16:56:19
Podczas kompilacji programu, musisz dołączyć dict.c, np.:
gcc -o test1 test1.c dict.c
CreateDictionary
, mówi CreateDectionary
(e
zamiast i
)Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-21 19:52:37
Mam ten problem i próbowałem go rozwiązać na wiele sposobów. W końcu okazało się, że make clean
i make
ponownie to rozwiązały. Powodem jest:
Otrzymałem kod źródłowy wraz z plikami obiektowymi skompilowanymi wcześniej ze starą wersją gcc. Kiedy moja nowsza wersja gcc chce połączyć te stare pliki obiektowe, nie może tam rozwiązać jakiejś funkcji. Zdarza mi się kilka razy, że dystrybutorzy kodu źródłowego nie sprzątają przed pakowaniem, więc make clean
uratowali dzień.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-26 12:59:09
Ogólnie ten problem wystąpił, gdy wywołaliśmy funkcję, która nie została zdefiniowana w pliku programu, więc aby rozwiązać ten problem sprawdź, czy wywołałeś taką funkcję, która nie została zdefiniowana w pliku programu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-17 11:48:25
- Przejdź do zaawansowanych ustawień systemowych we właściwościach komputera
- Kliknij na Zaawansowane
- Kliknij na zmienną środowiskową
- Wybierz opcję ścieżki
- Zmień opcję ścieżka do folderu bin dev C
- Apply and save it
- Teraz zapisz kod w folderze bin w programiście c
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-04-22 02:56:14