How to solve compile error for the llvm example? - c++

I try to compile the official site example, the Kaleidoscope example.
I totally copy the example and compile with the given command. But I can't compile success.
Here is the error information:
After add the #include "llvm/Support/raw_ostream.h". This error sovled.
Though another error comes out.

toy.cpp can't find errs() function.
Try to locate errs() declaration (.h file) and include this file inside toy.cpp

Related

Compiler says it cannot find file and yet reports errors in "unfound" file?

I have two short files located in the same directory. The contents of each are shown below.
File test.cpp contains:
int main()
{
#include <test.h>
}
File test.h contains:
syntax_error
Upon compiling test.cpp with either g++ or clang++, I get an error which is expected.
test.cpp:3:11: error: 'test.h' file not found with <angled> include; use
"quotes" instead
#include <test.h>
^~~~~~~~
"test.h"
However, I also get a second error which seems to contradict the first error.
In file included from test.cpp:3:
./test.h:1:1: error: use of undeclared identifier 'syntax_error'
syntax_error
^
Essentially, the first error reports that the compiler cannot find the file test.h, and the second reports a syntax error in the file that the compiler reported it could not find.
These are the only two errors generated.
I understand why the compiler reports the first error and that I should use quotes with #include in this case. Why, though, does the compiler say it cannot find the file when it clearly has found it? And, why would it continue to report errors in the "unfound" file?
This is a feature, not a bug.
The idea is that if the error is trivial (like a missing semicolon), then the compiler will try to continue compiling as if you had already fixed the error. This enables you to fix multiple errors in one go. This is especially useful when compiling your code takes a long time.
Imagine fixing a missing semicolon, recompiling for five hours, just so that the compiler finds another missing semicolon. And then you have to recompile again. That would be very frustrating, no?
Basically, the compiler will try to recover from any errors as far as it is able to, to be able to report as much errors as possible. Most compilers have a flag for this.
Why, though, does the compiler say it cannot find the file when it clearly has found it?
The compiler found the file yes, that's why it gave you a hint to use "" instead of <>. If it hadn't, it might not have given you the hint. Still, the compiler is not allowed to compile your code correctly, because your code is ill-formed.
As an analogy, just because the compiler found a missing semicolon, that doesn't mean that it can just compile the code with that missing character (if it tries to be Standards compliant). It will however recover and try to find other errors, if any.

Clang fails to find iostream. What should I do?

Earlier, I posed a related question.
I have the following program extracted from a large project in my Mac OS
#include <iostream>
int main(){
std::cout<<"hello"<<std::endl;
return 0;
}
Compiling it with Clang fails with the following error:
$ clang test.cpp
test.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
^
1 error generated.
For information,
A) I have already installed xcode command line tools, using xcodeselect --install. But it seems iostream does not locate in the default search path of clang.
B) Using g++ instead of clang compiles the program. But in my problem, I am not allowed to use other compiler than clang, or to change the source program.
C) I can see workaround techniques, e.g, by tweaking the search path in .bashrc or with some symbolic link, etc. But I feel reluctant to use them, because it seems that I have an installation problem with my Clang and tweaking the path only helps to avoid one of these path issues.
clang and clang++ do different things. If you want to compile C++ code, you need to use clang++
Alternatively you can invoke c++ compiler directly by providing language name explicitely:
clang -x=c++

C++ #include <iostream>

I'm a complete newbie to C++. I'm trying to write a simple c++
program but I got an error message. I suspect this is due to me
accidentally deleting some .h files on my mac which might have ruined
my Clang compiler. How can I fix this? Do I need to reinstall Xcode or
change a compiler?
Error message from terminal:
192:desktop ivanlee$ gcc test.cpp
In file included from test.cpp:1:
In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/iostream:38:
In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/ios:215:
In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/iosfwd:90:
In file included from /usr/include/wchar.h:70:
In file included from /usr/include/_types.h:27:
/usr/include/sys/_types.h:32:10: fatal error: 'sys/cdefs.h' file not found
#include <sys/cdefs.h>
^
1 error generated.
Code:
#include <iostream>
int main(){
return 0;
std::cout << "Hey";
}
At first I ought to recommend you the definitive stackoverflow c++ books list. Read these books and get your skills grow. This also will prevent questions like this.
Your question needs very-very basic knowledges and answers may be too long and your problem can be solved by many different methods.
I can tell you one but you should not ask questions like this.
Answer
Your code contains a mistakes:
return 0 before your other instructions (it should be the last). Now your program will just do nothing.
You should always compile C++ code with C++ compiler. gcc is not a c++ compiler but c compiler - use g++ instead.
Even if you correct 2 errors above, your std::cout call may fail because it does not flush the stream. You should also add << std::endl to this call.
Execute
g++ test.cpp -o out
Instead of
gcc text.cpp
run Terminal
execute gcc -v
Read the info and copy the include path. Copy it to your IDE that allows you to add the include path.
Mine, for an example, is:
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/include/c++/4.2.1

tao_idl returns with unspecified error when compiling using gcc

Hi I'm quite new to ACE ORB(TAO). My exisiting system compiles fine with xcc compiler in solaris. Now I got to use gcc compiler instead. When I try to compile my source code using gcc, I get the following error
/sbcimp/run/pd/ACE/6.0.7_x86/64Opt/bin/tao_idl: preprocessor "CC" returned with an error
xmake: /sbcimp/run/pd/ACE/6.0.7_x86/64Opt/bin/tao_idl: error 1 (0x1)
Why does tao_idl return this error? All I know is tao_idl compiles idl sources for ACE ORB. This error doesn't provide me any other clue regarding the reason behind this error.. Where can I find further details about this error?
I dont see much help in the net for tao_idl compiling. Can someone shed some light on this
TAO_IDL uses CC as preprocessor, do you have that available in your PATH when invoking TAO_IDL, just try to execute CC directly from the commandline.
In addition to #Johnny Willemsen's answer, I thoguht of adding a bit of more details so that it would be helpful for someone.
TAO_IDL uses an external pre processor.
If the macro TAO_IDL_PREPROCESSOR is defined, then it will use that.
Else if the macro ACE_CC_PREPROCESSOR is defined, then it will use that.
Otherwise, it will use "cc"
The problem that I had was that I was trying to use g++ as the precompiler, without setting any of the above macros. Hence TAO_IDL was always looking for cc.
Solution:
export TAO_IDL_PREPROCESSOR=/rtcigp/run/pd/gcc/32-bit/4.4.1/bin/g++
then include g++ binary into PATH
export PATH="$PATH:/rtcigp/run/pd/gcc/32-bit/4.4.1/bin"
This makes g++ as the preprocessor.

Compiling NCURSES src on HPUX

I am trying to compile ncurses-5.7 from source and after running ./configure I get the following error:
configure: error: Your compiler does not appear to recognize prototypes.
You have the following choices:
a. adjust your compiler options
b. get an up-to-date compiler
c. use a wrapper such as unproto
how can I fix this error?
As configure output suggests, you should either install an HPUX version of gcc or use unproto as a wrapper
Commenting the following line in configure file worked.
export CC="cc"
Got the answer from Here.