Programmable Devices
CPLDs, FPGAs, SoC FPGAs, Configuration, and Transceivers
20641 Discussions

Intel HLS compiler GCC Error

Altera_Forum
Honored Contributor II
3,921 Views

Hi,  

 

I'm trying to get the examples for the intel HLS compiler to work (included with Quartus Prime 17.1). As per the initialization requirements, I run: 

 

source init_hls.sh 

 

I then get an error regarding vsim not being on the path. No problem, I run the following command: 

 

export PATH=$PATH:/opt/intelFPGA/17.1/modelsim_ase/bin 

 

and try again: 

 

source init_hls.sh 

 

I now and able to use i++! So, to compile the example, I run: 

 

make test-gpp 

 

and that works. Creates an executable, and runs with "Success" as the output. 

 

Now the real test: 

 

make test-x86-64 

 

and poor alas, it fails. Error: 

 

i++ counter.cpp -march=x86-64 -o test-x86-64 

In file included from counter.cpp:1: 

In file included from /opt/intelFPGA/17.1/hls/include/HLS/hls.h:11: 

/opt/intelFPGA/17.1/hls/include/HLS/hls_internal.h:5:10: fatal error: 'queue' file 

not found# include <queue> 

1 error generated. 

HLS x86-64 compile FAILED. 

make: *** [Makefile:40: test-x86-64] Error 1 

 

This is likely an issue related to GCC. <queue> is a part of the standard GCC library, but why does it not find it when using the i++ command? 

I've tried a plethora of things to get this to work, including using the 'include' directive in the makefile to where queue is found. This leads to deeper and deeper problems.  

I've also tried pointing to the GCC libraries included in the modelsim directory. Same problems as using the system GCC libraries and header files. 

 

Any thoughts on where I'm going wrong? 

 

--I'm using Fedora 26 64bit.
0 Kudos
10 Replies
Altera_Forum
Honored Contributor II
2,245 Views

Hi cdj971! 

 

I ran into this issue as well on both Ubuntu 16.04 and CentOS 7. 

 

To resolve the issue I added the directory to the queue and dequeue to the include path ex: 

 

i++ small.c -v -I/usr/include/x86_64-linux-gnu/c++/5.4.0 -o small -march=x86-64 

 

 

 

If that doesn't work I also made these changes on the Ubuntu machine (related to you trying to get the libraries to see queue and dequeue): 

 

cd <quartus_install>/<ver>/hls/linux64/lib/dspba/linux64 

sudo mv libstdc++.so libstdc++.so.bak 

 

sudo mv libstdc++.so.6 libstdc++.so.6.bak 

 

sudo ln –s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 libstdc++.so.6 

 

sudo ln –s /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.21 libstdc++.so 

 

Hopefully this information was helpful!
0 Kudos
Altera_Forum
Honored Contributor II
2,245 Views

Hi, 

 

I'm running into the same problem.  

Neither using the include method or changing the libraries in the dspba folder. 

 

Is there another solution out there? 

 

(I'm using Fedora 27)
0 Kudos
Altera_Forum
Honored Contributor II
2,245 Views

Bump. 

 

I too am having the same issue. Similarly, changing the libstdc++ libraries did not work for me either. Ubuntu 16.04 LTS. 

 

EDIT: I found a solution. 

 

I installed gcc 4.4.7 (as recommended in the docs) by adding the following to /etc/apt/sources.list 

deb http://dk.archive.ubuntu.com/ubuntu/ trusty main universe deb http://dk.archive.ubuntu.com/ubuntu/ trusty-updates main universe 

 

then run the following: 

sudo apt-get update sudo apt-get install gcc-4.4 g++-4.4 

 

To switch between your current gcc and gcc-4.4, do the following (my current is gcc-5): 

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 100 --slave /usr/bin/g++ g++ /usr/bin/g++-5 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 50 --slave /usr/bin/g++ g++ /usr/bin/g++-4.4 sudo update-alternatives --config gc 

 

Then I added the following arguments to the compilation: 

-I/usr/include/c++/4.4.7 -I/usr/include/c++/4.4.7/x86_64-linux-gnu -L/home/jb/intelFPGA_lite/17.1/hls/linux64/lib/dspba/linux64 

 

I'm no expert but I'd think there's a way to include these paths by default when using i++. Regardless, this is what allowed me to compile the counter example.
0 Kudos
Altera_Forum
Honored Contributor II
2,245 Views

hello elias, 

 

I am new to the concept of HLS. I am using Intel HLS and going to start with the examples that come with the installation of Quartus prime edition. 

 

Can you share the successful project report files generated after testing any of those examples ? The examples are Counter, image_downsample,interp_decim_filter,QRD and YUV2RGB. If you have tried one of these examples, it would be great if you can attach the project files post synthesis in this thread .... 

 

Will be thankful
0 Kudos
Altera_Forum
Honored Contributor II
2,245 Views

Hello everyone,  

 

I am running into the same problem on Ubuntu 17.10. After trying this fix by frankmage, I bump into this type of error:  

 

"In file included from /usr/lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/c++/7.2.0/stdlib.h:36: 

/usr/include/c++/4.4/cstdlib:101:11: error: no member named 'div_t' in the global namespace 

using ::div_t; 

 

Any Idea what could it be causing this? 

 

Thanks
0 Kudos
Altera_Forum
Honored Contributor II
2,245 Views

Hello everyone, 

 

The only solution I found was to install the proper GCC version that Intel HLS asks for (4.4.7). It can be tricky as your OS (just like mine) won't always provide you such older versions of GCC. 

If you don't want to compile the sources of GCC 4.4.7 (which can be hard as you might need to compile several versions of GCC in between your version ans this one in order for it to compile) you can get a compiled one copying files from a docker container. 

This is absolutely not the most elegant way of doing things but it worked for me. 

As centos 7 still uses GCC 4.4, you can create a container based on centos 7 and install GCC from it. You can then retrieve the correct files to your host OS. 

 

This trick allowed me to to Intel HLS since without problems,  

Hoping this can help
0 Kudos
Altera_Forum
Honored Contributor II
2,245 Views

 

--- Quote Start ---  

Hello everyone,  

 

I am running into the same problem on Ubuntu 17.10. After trying this fix by frankmage, I bump into this type of error:  

 

"In file included from /usr/lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/c++/7.2.0/stdlib.h:36: 

/usr/include/c++/4.4/cstdlib:101:11: error: no member named 'div_t' in the global namespace 

using ::div_t; 

 

Any Idea what could it be causing this? 

 

Thanks 

--- Quote End ---  

 

 

Hello,  

 

I'm having the same issue as you. Have you managed to solve it? 

 

Thanks
0 Kudos
JBann
Beginner
2,245 Views

"In file included from /usr/lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/c++/7.2.0/stdlib.h:36: /usr/include/c++/4.4/cstdlib:101:11: error: no member named 'div_t' in the global namespace using ::div_t; " 

 

My fix for this was to add the following flags into the makefile:

-I/usr/include/c++/4.4.7 -I/usr/include/c++/4.4.7/x86_64-linux-gnu

(and the other steps posted above)

 

And cd into /usr/lib/gcc/x86_64-linux-gnu/7.2.0/../../../../include/c++ and unlink anything unrelated to 4.4.7. You can see i++ is looking at the 7.2.0 directory when it needs to be in 4.4.7

0 Kudos
NSuku1
Beginner
2,245 Views

Hi!

Im running into a similar problem on windows as well. How do I solve it? Im using Microsoft Visual Studio 2015 Professional version as mentioned in the docs. Can someone help?

 

I got the same error as "queue file no found"

 

Thanks in advance!

 

Nivetha

0 Kudos
COTR
Beginner
713 Views

Hi! NSuku1

You may find something helpful in part 3.1 of the blog below.

https://blog.csdn.net/ssj925319/article/details/117232159

0 Kudos
Reply