I don't know of any... you could dig around in the embedded world maybe, but even so most (almost all?) libraries are going to, at the very minimum, allocate it as a pointer based off a size you provide.
a fast queue … you just need 2 integers (current front and back) and the array. Wrap it in an object, 2-3 functions...
You could DIY this before you could locate, download, compile, and integrate someone else's code for it.
Boost has a circular buffer. It will only do one dynamic allocation when you create it (unless you explicitly change the capacity) so it should be much better than std::deque. If you don't want any dynamic allocations at all I guess you would have to use your own allocator but I don't really know much about that. https://www.boost.org/doc/libs/1_69_0/doc/html/circular_buffer.html
I also found this "fixed capacity queue" which sounds exactly like what you want but I have no idea how good it is. https://www.etlcpp.com/queue.html